2009 7 מרס 2009

שיחות מרובות Windows פונקציות onload ב-Javascript

Heres אחר peice קצת הולכת שולל Javascript שאני צריך לחפור מסביב כי המצב commaned זה. באחד מאתרי האינטרנט שלי, היה לי מצב שבו הייתי צריך ליישם "windows.onload" פעמיים. הדבר הראשון היה בא בחשבון חסר ניסיון כמו שלי (אני חייב לומר בכנות, כי אני כבר משתמש במסגרות-JavaScript של ספריות, אני forgotton לעשות דברים פשוטים ב ... שלי עצוב אבל נכון), היא השיטה הבאה ...

 window.onload = onloadfn1;
 window.onload = onloadfn2;
 window.onload = onloadfn3;
 וכו '..

מצטער לומר אבל, זה לא יעבוד ... לא רוצה לדבר על המדע ביצוע Javascript הרבה ... אבל לפי הניסיון האחרון שלי, רק את הפונקציה האחרונה (onloadfn3) יהיה חולה ממש מקבל להורג.

במצבים נורמליים, שלא כמו שלי (שבה אני אדבר על מעט מאוחר יותר) ... אתה יכול לעשות אחד מאלה כדי לבצע תפקודים onload mutliple ....

או משהו כזה

 doOnLoad function () {
         onloadfn1 ();
         onloadfn2 ();
         onloadfn3 ();
 }
 window.onload = doOnLoad;

על המצב הנוכחי שלי, אני לא יכול להשתמש בכל האמור לעיל ...
למה אני צריך לקרוא windows.onload פעמיים, ולא כי קוראים שתי פונקציות בתוך הפונקציה onload אחד? הנה מבט מהיר על הצהרה הבעיה שלי ...

"דפי האתר שלי בנויות כמו נושא וורדפרס .... כלומר יש כמה Header.php משותפים Footer.php שמקבל הכלולים אל כל דפי האתר. יש פונקציה ב onload implementaion Footer.php כדי לעשות כמה פונקציות onload משותפים. ויש עוד כמה עמודים, כי צריך משהו onload שלהם, מלבד אלה נעשה על ידי הפונקציה onload משותף. אם אני להקצות פונקציה התקשרות ישירות למטפל window.onload, זה יהיה יותר מדי לרכב callbacks שהוקצו בעבר Footer.php את "

.... הבעיה שלי הבין :) ?

טוב! יש כמה פתרונות שאני מצאו. כולם דומים מאוד ובעיקר implementions של הפתרון שניתן על ידי סיימון Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...

פתרון:

כל שעליך לעשות הוא להוסיף את קוד ה-JavaScript לאתר ...

 פונקציה addLoadEvent (func) {
     var oldonload = window.onload;
     אם (window.onload typeof! = 'פונקציה') {
        window.onload = func
     אחר} {
        window.onload = function () {
            אם (oldonload) {
                   oldonload ()
           }
           func ()
        }
    }
 }

ולקרוא את זה במקום "windows.onload" כרגיל

 addLoadEvent (FunctionToRunOnPageLoad);
 addLoadEvent (function () {
 / * קוד יותר לרוץ על * הטעינה של הדף
 }); 

היתרונות של קטע הקוד הזה ...
1. בעיקר, הוא מאפשר לך אירועים windows.onload מרובות, המכונה מחלקים נפרדים של הקוד שלך, ללא overridding ההגדרה הקודמת
2. זה באמת לא מתבלט. זה יכול להיות ממוקם בתוך קובץ עם התסריטים האחרים שלך, או בקובץ נפרד.
3. זה עובד גם אם window.onload כבר נקבע.


2008 20 ספטמבר 2008

Textarea הבעיה כווץ ב XSL / XSLT


הבעיה לעולם:
נתקלתי בבעיה הזאת לגבי textareas ב XSLs. במילים פשוטות, הבעיה מתעוררת כאשר יש לך תג <textarea> ריק, אז זה יהיה לכווץ אותו <textarea />.
כלומר, אם היה לך משהו כמו הבאה ב XSL שלך ואת נתוני XML עבור הערך Textarea, מחזיר כלום ...

<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ Textarea>

כמו דפדפנים שאינם מכירים זה, זה יגרום את שאר טופס HTML לרוץ לתוך אזור הטקסט.

פתרונות אפשריים:

ב XSL, להוסיף אי שבירת שטח () לאחר xsl: tag.BEWARE ערך, לטפל בחלל הנוסף שהוספת, במהלך לוואי אימותים של הלקוח בתחום זה.

<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ Textarea>

או
<xsl:value-of select="concat (DESCRIPTION,'')"/>

או
הכנס <xsl:value-of select="@unknown" /> תג מצביע על תכונה לא ידוע. זה יאלץ מנתח XSLT PHP כדי ליצור פתיחה וסגירה באזור תג הטקסט, גם אם אין באמצע.

או
הוספת שדה <xsl:text> המכיל מקום לכפות על תג סוגר.

עם זאת, אם כי הפתרונות הנ"ל עשוי להיראות כדי לפתור את הבעיה, אני עדיין לא משוכנע שהם צודקים הטובים דרכים לתקן את זה. אם יש דרך טובה יותר אחר של תיקון זה שגעון, אנא ספר לנו עליהם.


2008 14 ספטמבר 2008

במגוון מצבים XSL מבחן (אוסף של XSL: IF ו XSL: כאשר התנאים לבדוק)

בכל פעם שאני צריך לעשות XSL: אם או XSL: כאשר הבדיקה, יש לחזור על ספרי עיון. אני אף פעם לא זוכר אותם. חשבתי שיהיה יותר שם בחוץ, בדיוק כמוני, מעדיף מעדיף את כולם, אפשר, במקום אחד, מוכן להפנות בעת הצורך.

למי הם חדשים ... תחביר עבור XSL: אם

<xsl:if test="expression">
<- תוכן: תבנית ->
</ Xsl: if>

XSL: אם / xsl: כאשר אוסף מבחן
התנאים הבאים הם כולם פשוט עצמי מסביר. אז אני מאמין שזה לא צריך להסביר הרבה

<xsl:if test="position()=last()-1">
אם זה המרכיב האחרון אבל אף אחד ברשימה!
</ Xsl: if>

<xsl:if test="SALARY> 5000 ">
משכורתו של אדם עולה על Rs. 5000
</ Xsl: if>

<xsl:if test="count(JOBS)> 3 ">
יש יותר מ 3 משרות ברשימה זו!
</ Xsl: if>

<xsl:if test="(@DEPT ='SALES') או (@JOINYEAR = '1997')">
אדם זה הוא ממחלקת מכירות או שנה את ההצטרפות הוא 1997
</ Xsl: if>

<xsl:if test="EXPERIENCE">
האדם הזה יש ילד אחד atleast אלמנט ניסיון.
</ Xsl: if>

<xsl:if test="@HOBBY">
לאדם יש תכונה תחביב.
</ Xsl: if>

תנאי את אותו טקסט יכול לשמש XSL: בחר / XSL: מתי גם

XSL: לבחור

XSL XSLT של: בחירת הוראה דומה xsl: אם אך יש כמה הבדלים מרכזיים:
• אחת xsl: אלמנט בוחר יכול לבדוק את מצב אחד או יותר ולהוסיף צמתים שונים לעץ את התוצאה על סמך מצב נכון.
• xsl: לבחור אלמנט יכול לקבל תבנית ברירת המחדל להוסיף לעץ פרי אם כל התנאים מתקיימים. (השווה xsl: אם, שאין לה מקבילה של המצב "אחר".)
• xsl: לבחור אלמנט יש subelements הספציפיים הדרושים לו לעבוד, כל עוד אתה יכול לשים את כל בנויים היטב אלמנטים שאתה רוצה בתוך XSL: אם אלמנט.

<xsl:choose>
<xsl:when test="boolean-expression">
לעשות משהו כאשר זה ביטוי בוליאני הוא ture
</ Xsl: כאשר>
<xsl:otherwise> לעשות משהו אחר </ xsl: אחרת>
</ Xsl: לבחור>


2008 13 אוגוסט 2008

Tokenizing מחרוזת מופרד בתוך XSL

אם הדרישה שלך היא לפצל את הערך צומת XML, המכיל מחרוזת תחום בעל ערך, לתוך פרטים בודדים, אז הגעתם למקום הנכון ... יש לראות בדוגמה למטה. אם אתה מכיר קצת XML ו XSL ... אני לא חושב שהיית צריך שום הסבר.
כמו כן, בדוגמה זו כוללת שימוש בפונקציות כמו XSL XSL: גיוס תבנית, xsl: מחרוזת, לפני, xsl: מחרוזת משנה אחרי, אם זה מה שאתה אחרי.

XML להשתנות (food.xml): -
נניח המשימה היא tokenize מופרד מיתר באמצעות פסיק, את את "מילות מפתח" תג

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<date>July 2008</date>
<description>All about things we eat everyday</description>
<keywords>Fruits, Vegetables, Pulses, Meat, Cereals </keywords>
</food>

XSL (food.xsl): -

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>XSL 1.0 Delimited String Tokeniser</title>
</head>
<body>
<xsl:value-of select="food/meta"/>
<div >
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="food/keywords" />
<xsl:with-param name="delimitr" select="','" />
</xsl:call-template>

</div>
</body>
</html>
</xsl:template>
<xsl:template name="tokenize">
<xsl:param name="string" />
<xsl:param name="delimitr" />
<xsl:choose>
<xsl:when test="contains($string, $delimitr)">
<div style="border:1px solid red;">
<h3><xsl:value-of select="substring-before($string,$delimitr)" /></h3>
<xsl:variable name="data" select="substring-before($string,$delimitr)"/>
</div>
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="substring-after($string, $delimitr)" /><xsl:with-param name="delimitr" select="$delimitr" /></xsl:call-template>
</xsl:when>
<xsl:otherwise>
<div style="border:1px solid red;">
<h3><xsl:value-of select="$string" /></h3>
</div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

פלט HTML כתוצאה: -

<div>
<div style="border: 1px solid red;">
<h3>Fruits</h3>
</div>
<div style="border: 1px solid red;">
<h3> Vegetables</h3>
</div>
<div style="border: 1px solid red;">
<h3> Pulses</h3>
</div>
<div style="border: 1px solid red;">
<h3> Meat</h3>
</div>
<div style="border: 1px solid red;">
<h3> Cereals </h3>
</div>
</div>

אין צורך לומר ... פשוט לשנות את הפרמטר "delimitr" כדי מפריד על פי בחירתך


2008 4 אוגוסט 2008

בעיה עם מיקום () ב XSL ... או זה?

היה לי את הבעיה strage תוך יצירת XSL היום. חיפשתי תשובות בכל רחבי הרשת, אבל couldnt למצוא כל .... למעשה אני מניח! אני בכח יודע מה הבעיה שלי, אז מה אני מחפש?

בכל אופן! ליתר ביטחון יש לך את אותה בעיה מאוד מדי ואיכשהו בכוח של חיל הצלחת לנחות על דף זה ... היית להודות לי טון ... ואם יש לך נחת בטעות על גורל מוזרה בעמוד זה יקרה לך להיות מפתח XSL, לעשות רשום את זה עכשיו, הסיבה עתידי, אם ביום מן הימים, אתה עומד מול בעיה זו, ואז כוח לא יכול להיות איתך.

הבעיה בהצהרה:
יש לי את ה-XML, שם יש שני צמתים עם מספר פריטים בו את הפריטים בין שני צמתים יש התכתבות 00:59. בדוגמה הבאה, כל פריט <array הצומת name="PLAYURL" /> מתייחס (המיקום המתאים) כדי פריט <array הצומת name="SITENAME" />

<?xml version="1.0" encoding="utf-8"?>
<myplaylists>
<playlist>
<title>Best of Rest </title>
<array name="SITENAME">
<str>www.musicindiaonline.com</str>
<str>www.dhingana.com</str>
<str>www.raaga.com</str>
<str>www.smashits.com</str>
<str>www.desimusic.com</str>
<str>www.musicplug.in</str>
</array>
<array name="PLAYURL">
<str>http://www.musicindiaonline.com/123/</str>
<str>http://www.dhingana.com/play/123</str>
<str>http://www.raaga.com/123</str>
<str>http://ww.smashits.com/123</str>
<str>http://www.desimusic.com/123</str>
<str>http://www.musicplug.in/123</str>
</array>
</playlist>
</myplaylists>

עכשיו, יש לי לולאה, שם אני לולאה דרך <array name="SITENAME">, ואני רוצה לקבל את הפריט בנושא (במיקום המתאים) ב <array name="PLAYURL">,

מה היית normaly מנסה לעשות זה ...

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
play from : <a href="{../../array[@name='PLAY']/str[position()]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

סליחה!! זה לא יעבוד ... אה! Surpised ...

עכשיו אתה בטח רוצה לנסות, משהו כזה ...

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos"> <xsl:value-of select="position()"/></xsl:variable>
play from : <a href="{../../array[@name='PLAY']/str[$pos]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

ושוב זה לא יעבוד ... עכשיו אתה מגרד את הראש, מנסה ליצור קשר עם כל מי שאתה חושב יודע כמה XSL ויכול להיות לעזר בכל ... אתה מנסה כל אפשרות אחרת ... ועדיין זה לא יעבוד ... טוב! Thats מה קרה atleast לי ...

Dont ייאוש!! נסה את זה

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$ pos-int ]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

Dont שואלים אותי למה זה עובד. כי אני לא צריך סיבה נכון ... אם אתה עושה! נא לא לזרוק הערה. זה יכול להיות שימושי למדי. כן! אם יש לך כותרת טובה יותר לתפקיד זה, לעשות ירידה לי בשורה :)


2008 2 אוגוסט 2008

הגדרת DOCTYPE ב XSL

בשבוע שעבר יצרתי פריסת progessive HTML / CSS עבור לקוח, נבדק את זה ב IE6, IE7 ו FF 3, נראה בסדר גמור ... עד! פריסת הגדיל את מחזור manufacting. זה נכשל. פריסת רכיבי הדף פשוט יצא בכל מקום, כאשר פריסת ה-HTML הוסב XSL ו-XML להחיל את זה ... באסה!

לא יכולתי לישון על אישור בסוף השבוע, לקראת יום שני בבוקר, כאשר אני אצטרך לתקן את זה SH **. אבל עכשיו שיש experince מעט בהתמודדות עם מצבים מהסוג הזה (Quirks הדפדפן, זאת אומרת), ידעתי שזה היה קשור לשום דבר אחר אבל DOCTYPE .... וזה היה ...

בעיה:
אתה רוצה שליטה על DOCTYPE, מאז השינוי שלך יכלול DOCTYPE מחדל באופן מפורש, ואתה הפריסה יסתיימו רק לזרוק.

פתרון:
XSLT מפרט מספק שיטות פלט להגדיר DOCTYPE של choise. כמו כן, עבורנו מפתחי ממשק המשתמש, את הנושאים המעניינים יהיו שיטות פלט HTML ו -XML שיטות פלט .

טוב! לפני שזה מתחיל לשעמם, הנה התיקון.

עבור למשל, אם היה לך DOCTYPE הבאה בגירסה ה-HTML שלך:. -

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

לאחר מכן, בשנת XSL אתה צריך שיהיה לך את הדברים הבאים: -

<xsl:output method="html" doctype-system="http://www.w3.org/TR/html4/loose.dtd" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" indent="yes" />

ולבסוף! ניתן לוודא פלט XSLT שלך מציית DOCTYPE שבחרת.


2008 4 מאי 2008

כלול בתוך XSL XSL

אם XML / XSL הופך הוא domian שלך, אז יש פעמים שאנחנו רוצים peice של קוד דינמי לשמש פריט בספריה (להיעשות מחדש שמיש). למה אני מתכוון, מן הסתם יכול להיות ברור יותר עם התרחיש הזה למשל.

תאר לעצמך שאתה יוצר אתר אינטרנט (באמצעות XML, XSL transfroms ofcourse) ורוב הדפים יהיה מודול תגובות. טוב! אז אם אתה מעתיק או להדביק את הקוד הזה לתוך התבנית כל דף (שבו אני לא צריך להגיד, אבל לעשות תחזוקה חוזרת סיוט) או אפילו טוב יותר, אתה יוצר קובץ לכלול שניתן נעצרה בכל מקום שבו אתה רוצה את זה בדף שלך ( ים) ...
אז איך אנחנו יוצרים קובץ XSL לכלול ולכלול אותו בתוך קובץ אחר XSL? הנה כמה ...

רק כדי להבהיר את הדברים ... הנה רשימה מהירה של קבצים תיצור ... כאן, אנחנו נהיה כולל מידע על פירות וירקות לתוך דף הורה שנקרא מזון.

1. food.xml - נתוני XML קובץ שבו השינוי יחול
2. food.xsl - קובץ XSL הראשי, אשר יהפכו food.xml שלנו
3. inc_fruits.xsl - XSL כוללים קובץ יעבד נתונים פירות
4. inc_vegtables.xsl - XSL כוללים קובץ יעבד נתונים vetetables

אני לא חושב שאני צריך להסביר הרבה, את הקודים המרכיבים הנ"ל, יהיה עצמית הסבר ...

FOOD.XML


<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<date>July 2008</date>
<description>All about things we eat everyday</description>
<fruits type="tropical">
<item name="mango" moreinfo="http://www.mango.com">Mango is the king of fruits</item>
<item name="banana" moreinfo="http://www.banana.com">Banana once a day , keeps the doctor away</item>
<item name="orange" moreinfo="http://www.orange.com">Orange is the color and rich in vitamin C</item>
<item name="Papaya" moreinfo="http://www.papaya.com">Papaya - Hot when raw, cold when ripe</item>
</fruits>

<vegetables>
<item name="spinach" moreinfo="http://www.spinach.com">Spinach is full of iron</item>
<item name="asparagus" moreinfo="http://www.asparagus.com">Asparagus contains loads of vitamin D </item>
<item name="fenugreek" moreinfo="http://www.fenugreek.com">Fenugreek is rich in vitamin C</item>
</vegetables>
</food>


FOOD.XSL


<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="inc_fruits.xsl" />
<xsl:include href="inc_vegetables.xsl" />
<xsl:template match="/">
<html>
<head>
<title>Title</title>
</head>
<body>
<h3><xsl:value-of select="/food/description" /></h3>
Modification Date : <xsl:value-of select="/food/date" />
<hr/>
<h5> About Fruits</h5>
<xsl:call-template name="about_fruits"/>

<hr/>
<h5> About Vegetables</h5>
<xsl:call-template name="about_vegetables"/>

<hr/>
</ Body>
</ Html>
</ Xsl: תבנית>
</ Xsl: stylesheet>


INC_FRUITS.XSL

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1" />
<xsl:template name="about_fruits">
<xsl:for-each select="/food/fruits/item/@*">
attribute name : <xsl:value-of select="name()"/>
attribute value : <xsl:value-of select="."/> <br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>


INC_VEGETABLES.XSL

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1" />
<xsl:template name="about_vegetables">
<xsl:for-each select="/food/vegetables/item/@*">
attribute name : <xsl:value-of select="name()"/>
attribute value : <xsl:value-of select="."/> <br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

להוריד את כל הקבצים הנ"ל כאן (256 הורדות)


2008 4 אפריל, 2008

עבודה עם תכונות ה-XML צומת XSLT

אם אתה משתמש ב-XML ו-XSL, אז אתה יכול לבוא על פני זמן, כאשר אתה צריך לשחק עם התכונות והערכים של צמתים XML ב-XSL לך. הם המון אתרים עם מידע מייגעים על זה, אבל לא מצאתי היו קצרות ומדויקות ... זה לא TUTORIAL XML / XSL, אבל הניסיון שלי שם, יחד מעין רשימת לרמות ...

דגימת ה-XML אנו עובדים עם נראה כך ...

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<fruits type="tropical">
<item name="mango" moreinfo="http://www.mango.com">Mango is the king of fruits</item>
<item name="banana" moreinfo="http://www.banana.com">Banana once a day , keeps the doctor away</item>
<item name="orange" moreinfo="http://www.orange.com">Orange is the color and rich in vitamin C</item>
<item name="Papaya" moreinfo="http://www.papaya.com">Papaya - Hot when raw, cold when ripe</item>
</fruits>
</food>

כך מאפשר להתחיל להפוך XML מעל שלנו באמצעות XSL

דוגמה 1: הצגת הערך תכונה נבחר

<xsl:value-of select="/food/fruits/item[@name='orange']" /><br />
to get more information about <a href="{/food/fruits/item[@name='orange']/@moreinfo}" target="new" ><xsl:value-of select="/food/fruits/item[@name='orange']/@name" /> </a>

התוצאה HTML ייראה

Orange is the color and rich in vitamin C,
to get more information about <a href="http://www.orange.com" target="new">


דוגמא 2: שהסתחררו ולהציג את כל שמות מאפיין XML וערכיהם

<xsl:for-each select="/food/fruits/item/@*">
attribute name : <xsl:value-of select="name()"/>,
attribute value : <xsl:value-of select="."/> <br />
</xsl:for-each>

התוצאה HTML ייראה


attribute name : name, attribute value : mango
attribute name : moreinfo, attribute value : http://www.mango.com
attribute name : name, attribute value : banana
attribute name : moreinfo, attribute value : http://www.banana.com
attribute name : name, attribute value : orange
attribute name : moreinfo, attribute value : http://www.orange.com
attribute name : name, attribute value : Papaya
attribute name : moreinfo, attribute value : http://www.papaya.com


להוריד את כל הקבצים הנ"ל כאן (249 הורדות)



לראות את החלל הזה, אני אמשיך לעדכן את זה עם הממצאים החדשים ...


NDK הבית | הבעת IT | חך הבעת | Penmenship הבעת | הנוראים הבעת | לבטא את עצמי