рдХреИрд╕реЗ рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ рдХреЛ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛

рдЫрд╡рд┐

рдПрдХ рдмрд╛рд░ ... рдХрдм рддрдХ? рдХрд▓! (C), рдЕрд░реНрдерд╛рддреН, рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ рд╕реЗ .NET рдореЗрдВ рдПрдХ рдорд╛рдореВрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреЛрд░реНрдЯ рдХреА рдереАред рдФрд░ рди рдХреЗрд╡рд▓ .NET рдкрд░, рд▓реЗрдХрд┐рди 1.1 рд╕рдВрд╕реНрдХрд░рдг рдкрд░ред

рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЕрдкрдиреЗ рджрд╛рдВрддреЛрдВ рдореЗрдВ рдкреИрдирд╛рдкрди рд▓реЗрдВ (рдпрд╛ 2003 рдХреЗ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдПрдХ рдХрдирд╡рд░реНрдЯрд░, рдЬреЛ рдХреЛрдИ рднреА рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ), рдФрд░ рдлрд┐рд░ рдПрдХ рдЖрд░рд╛ рдХреЗ рд╕рд╛рдеред

рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдХреНрд╖реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╕рдВрд░рдЪрдирд╛рдПрдВ (" System.Drawing.Size рдПрдХ рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реИ") рдФрд░ рдзрд╛рдЧреЗ рдореИрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ - рднреЛрдЬред рд▓реЗрдХрд┐рди рдХреБрдЫ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рд╕реНрд╡рд╛рдЧрдд рд╣реИред



рд╕рд╛рдВрд╕реНрдХреГрддрд┐рдХ рд╕рдВрд╕реНрдХреГрддрд┐рдпрд╛рдВ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЖрдкрдХреЛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛?


рдЫрд╡рд┐
рдЪрд▓реЛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдмреАрдЬ рдХреЗ рд▓рд┐рдПред рдЕрдиреБрд╡рд╛рдж рд╕рдВрдЦреНрдпрд╛рдУрдВ рд╕реЗ рд▓реЗрдХрд░ рддрд╛рд░ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред

CultureInfo oldCulture = CurrentThread.CurrentCulture; CultureInfo oldCultureUI = CurrentThread.CurrentUICulture; CurrentThread.CurrentCulture = new CultureInfo("en-US"); CurrentThread.CurrentUICulture = CurrentThread.CurrentCulture; try { render_impl(); } finally { CurrentThread.CurrentCulture = oldCulture; CurrentThread.CurrentUICulture = oldCultureUI; } 


рдЕрдЪреНрдЫрд╛, рдпрд╣ рдмреИрд╕рд╛рдЦреА рдХреНрдпреЛрдВ?

рдФрд░ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ 100,500 рдмрд╛рд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдХреНрдпреЛрдВред рддреЛ, рдЗрд╕рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ

 (float) System.Double.Parse(foo_string, NumberStyles.Float, new CultureInfo("en-US")); 
рдФрд░
 new Double(foo_number).ToString(new CultureInfo("en-US")); 

рд▓реЗрдЦрдХ рдПрдХ рдЖрд▓рд╕реА рдХреБрддреНрддрд╛ рдФрд░ рдкрд░рдЬреАрд╡реА рд╣реИ? Otozhред рдФрд░ рдЖрдк рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рдереЗ - рд╕рдордп рд╕реАрдорд╛ рдПрдХ рд╕рдкреНрддрд╛рд╣ рд╣реИ, рдФрд░ рдЖрдирдВрдж рдЖ рдЧрдпрд╛ рд╣реИ

 find ~/pd4ml/sources -type f -print | xargs cat | wc -l 420242 


рдЗрд╕ рд╣реИрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдкреАрдбреАрдПрдл рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдХрд▓рд╛рдмрд╛рдЬ рдкрд╛рдардХ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЖрдВрд╢рд┐рдХ рдФрд░ рдкреВрд░реНрдгрд╛рдВрдХ рднрд╛рдЧреЛрдВ рдХреЗ рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд╛рд╖реНрдЯреНрд░реАрдп рдХреЙрдорд╛ рдХрд╛ рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рдВ, рдФрд░ HTML / CSS рдореЗрдВ, рд╡рд╣реА рд╕реНрдерд╛рдиреАрдп рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЬрдбрд╝ рдирд╣реАрдВ рд▓реЗрддреА, рд╣реЗрд╣реЗред

рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рд╡реНрдпрд╛рдореЛрд╣ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ


рдЫрд╡рд┐
рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдиреАрдХреЛрдВ рд╣реЛрддрд╛ рд╣реИ ред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рджреЗрдирд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рдкреНрд░рд┐рдВрдЯрд░ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рд╣реИ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдирд╛ рд╣реИ, рддреЛ java.awt.Graphics2D рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдФрд░ PDFDevice , RTFDevice , рдЖрджрд┐ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдореИрдВ рдХрд╣рд╛рдБ рдЧрдпрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреА ред рдЕрдиреБрдХреВрд▓ рднрд╛рд░рддреАрдп рдХрд╛ рд╢реБрдХреНрд░рд┐рдпрд╛ рдЕрджрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд╣реАрдВ рднреА рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рдЕрдкрдиреЗ рдЕрдореВрд░реНрдд MegaDevice рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдирд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрдмрдВрдз System.Drawing.Context рдХреЛ рд▓рд╛рдирд╛ рдерд╛ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдерд╛ред рдЙрд╕ рдкрд░ рдмрд┐рддрд╛рдпрд╛ рдЧрдпрд╛ рд╕рдордп рдПрдХ рдкрд╣рд░рд╛ рдерд╛ред рдФрд░ рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╕реНрдХреНрд░реАрди рдФрд░ рдкреНрд░рд┐рдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдмрд╕ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред

рддрд╛рд░реНрдХрд┐рдХ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рдбреЙрдЯрдиреЗрдЯ рдЕрдиреБрдмрдВрдз рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЬрд╛рд╡рд╛ рд╕реЗ рдирд╣реАрдВ?

рдпрд╣рд╛рдВ рдЙрддреНрддрд░ рд╕рд░рд▓ рд╣реИ - рдХрдирд╡рд░реНрдЯрд░ рдиреЗ рдЦреБрдж рдХреЛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд░реВрдк рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ

  g.drawString( prefix + index + " ", x, y ); 

рдкрд░
  g.DrawString( prefix + index + " ", SupportClass.GraphicsManager.manager.GetFont(g), SupportClass.GraphicsManager.manager.GetBrush(g), new PointF(x, y)); 

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛрдирд╛ рдкрдбрд╝рд╛ред рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ - рдЕрдиреНрдпрдерд╛ рдЖрдк рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рддреЛ рд╕реНрд░реЛрдд рдЧреНрд▓рд┐рдЯреНрд╕, рдпрд╛ рд╢реБрд░реВ рдХрд┐рдП рдЧрдП рдмрдЧред

рд░рд╛рдЬреНрдп рдорд╢реАрдиреЛрдВ рдФрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд / рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд


рдЫрд╡рд┐
рдЕрдЧрд▓реА рд░реЗрдХ рд╕реАрдПрд╕рдПрд╕ рдкрд╛рд░реНрд╕рд░ рдХреЗ рд╕рд╛рде рд╣реБрдИред рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА ( com.steadystateред * ) рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд╕рдордп рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛ред рд╣рд╛рдВ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ - рдЬрд╛рд╡рд╛рд╕реАрд╕реА рд╕реЗ ANTLR рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╕рд╣реА рд╣реЛрдЧрд╛ред рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдЦреЛрдП рд╕рдордп рдФрд░ рд╕рдордп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рддреАрди рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛ рджреЛ рдШрдВрдЯреЗред

рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдЖрд▓рд╕реНрдп рдиреЗ рдореБрдЭреЗ рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рджрд┐рдпрд╛ - рдСрдЯреЛ-рдЬрдирд░реЗрдЯреЗрдб рдлреБрдЯрдХреНрд▓реЛрде рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╡рд╣ рдХреЗрд╡рд▓ рддреАрди рд╕реМ рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рд╣реИ, рдпрд╣ рдЖрд╕рд╛рди рд╣реИред рдФрд░ рдлрд┐рд░ - рдмрд╛рдврд╝ рдЖ рдЧрдИред

рдпрд╣рд╛рдБ рдмрд┐рдЯреНрд╕ рд╣реИрдВ - рд╡реЗ рдЕрд▓рдЧ рд╣реИрдВ :

 private static long URShift(long number, int bits) { if ( number >= 0) return number >> bits; else return (number >> bits) + (2L << ~bits); } 

рдФрд░ рдЗрд╕ рддрд░рд╣ - рдореИрдВ рдПрдХ рд▓рдВрдмреЗ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдореЗрдВ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд▓рдВрдмреА рдХрд╛рд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рднреВрд▓рддрд╛, рдЙрд╕реА рд╕рдордп рдореИрдВ рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдкрд╣рдЪрд╛рди рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ:

 if (((ulong)active0 & (ulong)(0x8000103000000000L)) != 0L) { jjmatchedKind = 66; return 577; } 

рдореИрдВ рдЧреЛрдЯреЛ рдФрд░ рдмреНрд░реЗрдХ рд▓реЗрдмрд▓ рдХреА рдпрд╛рдж рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдЕрдиреНрдпрдерд╛ рдЬреЗрдиреЗрд░рд┐рдХ рдЙрдиреНрд╣реЗрдВ рдХрд╣реАрдВ рднреА рднрдЯрдХрд╛ рджреЗрддрд╛ рд╣реИ:

 EOFLoop : for (; ; ) { for (; ; ) { ... else if ((jjtoSkip[URShift(jjmatchedKind, 6)] & (1L << (jjmatchedKind & 63))) != 0L) { if (jjnewLexState[jjmatchedKind] != - 1) curLexState = jjnewLexState[jjmatchedKind]; goto EOFLoop; } ... } } 

рдФрд░ рдореИрдВ FillBuf рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рд╕реНрдЯреНрд░реАрдо рдХрд░рддрд╛ рд╣реИ - рдЙрдирдХреЗ рдмреАрдЪ рдЫреЛрдЯреЗ рдЕрдВрддрд░ рднреА рд╣реИрдВред рдЬрд┐рд╕рд╕реЗ рдорд╢реАрди рдЦрд░рд╛рдм рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рддрдХ рдХрднреА рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддреА рд╣реИред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдВрдд рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ:

 int i; try { if(inputStream == null) throw new System.IO.IOException("EOF"); i = inputStream.ReadBlock(buffer, maxNextCharInd, available - maxNextCharInd); if (i <= 0 /* was == -1 */) { inputStream.Close(); inputStream = null; throw new IOException(); } else maxNextCharInd += i; return ; } catch (IOException e) { --bufpos; backup(0); if (tokenBegin == - 1) tokenBegin = bufpos; throw e; } 

рдЗрд╕рд▓рд┐рдП, рдПрдХ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд╕рд╛рде, рдкрд╛рд░реНрд╕рд░ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рдерд╛ред "рдЖрд╕рд╛рди" рдХреЗ рд╕рд╛рде - рдореИрдВ рдЕрднреА рднреА рдПрдХ рдкреЛрдЦрд░ рдореЗрдВ рдмреИрдард╛ рдерд╛, рд╣рд╛рдБред рдореИрдВрдиреЗ рдПрдХ рджрд┐рди рдорд╛рд░ рдбрд╛рд▓рд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдХреИрд╕реЗ рдорд╛рд░рд╛ - рдПрдХ рдореИрд▓рд╛ рдХрд╛рдо рдХреЗ рд▓рд┐рдПред "рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдмрдХрд╡рд╛рд╕ рдХреЛ 132 рдмрд╛рд░ рдХрдЪрд░реЗ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдареАрдХ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред "

рдкреНрд░рддреАрдХ рдФрд░ рд╕рдВрдЦреНрдпрд╛, рдФрд░ рдЙрдирдХреЗ рдЖрд╕рдкрд╛рд╕ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯрддрд╛


рдЫрд╡рд┐
рдЕрдЧрд▓рд╛ рдЪрд░рдг рдпреВрдирд┐рдХреЛрдб рдФрд░ рджрд╛рдПрдБ-рд╕реЗ-рдмрд╛рдПрдБ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдерд╛ред рдФрд░ рдлрд┐рд░ java.lang.Character рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЖрд╢реНрдЪрд░реНрдп рдореЗрд░реЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВ, рдЙрд╕рдХреЗ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмреАрдЪред рдХреЗрд╡рд▓ рдирд╛рдо рдореЗрдВ рдЖрдо рддреМрд░ рдкрд░ред рддреЛ рдореЗрдВ рднреА

 public static int digit(int codePoint, int radix) 

рдПрдкреНрд╕рд┐рд▓реЙрди-рдкрдбрд╝реЛрд╕ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ (рдФрд░ рди рдХреЗрд╡рд▓)ред

рдкрдВрджреНрд░рд╣ рдорд┐рдирдЯ рдХреЗ рдЧреЛрдЧрд▓рд┐рдВрдЧ рдиреЗ рдпрд╣ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджрд┐рдпрд╛ рдХрд┐ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХрд┐рд╕ рд╕реНрдерд╛рди рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдмрдбрд╝реЗ рдХреНрд▓рдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрд░реНрдерд╛рддреН, java.lang рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ ред * рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд╡рд╣ рд╣реИ, java.lang.Character рдФрд░ рдирд┐рдХрдЯрд╡рд░реНрддреА java.lang.CharacterData * рдЬрд┐рд╕рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рд╛рд░рдгреА рд╣реИред

(рд╡рд┐рдбрдВрдмрдирд╛) рдФрд░ рдХрд┐рд╕рдиреЗ рдХрд╣рд╛ рдХрд┐ рдЬрд╛рд╡рд╛ рдПрдХ рдЕрдиреБрдкрдпреБрдХреНрдд рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реИ?

рдЙрд╕реА рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, java.math.BigDecimal рдХреЛ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпреЗ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рдЕрдВрддрд░ рд╣реИрдВ - рд╡реЗ рдЙрддреНрд╕рд╛рд╣рдЬрдирдХ рдирд╣реАрдВ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕реА рдЬрдЧрд╣ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдк рдХреЛрдб рдореЗрдВ рдХрджрдо рд░рдЦрддреЗ рд╣реИрдВред рд╣рд╛рдВ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ - рдХреНрдпрд╛ рдореИрдВ рдПрдХ рдмреБрдореЗрд░ рдФрд░ рдПрдХ рдкрд░рдЬреАрд╡реА рд╣реВрдВ? рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╣реИред

BigDecimal рдХреЗ рд╕рд╛рде, setScale рдореИрдЬрд┐рдХ рдФрд░ рдЯреНрд░реВ рд╕реНрдЯреНрд░рд┐рдВрдЧ () рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА:

  BigDecimal d1 = new BigDecimal(currentLineThickness / 2 + x ); BigDecimal d2 = new BigDecimal(currentLineThickness / 2 + y ); d1 = d1.SetScale(4, BigDecimal.ROUND_UP); d2 = d2.SetScale(4, BigDecimal.ROUND_UP); buf.Append(d1.ToString()).Append(" "); buf.Append(d2.ToString()).Append(" m\n"); 


рд╣реИрд╢рдЯреЗрдмрд▓ рдФрд░ рдЯреЛрд╕реНрдЯрд░рд┐рдВрдЧ


рдЫрд╡рд┐
рдЕрдЧрд▓реЗ рдХреНрд╖рдг, рдЬрд┐рд╕рдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдкреНрд░рд┐рдп рдорд┐рдирдЯ рджрд┐рдП, рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдкреНрд░рд╕рд┐рджреНрдз рднреЛрдЬ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЬреНрдЮрд╛рдд рд▓реЗрдЦрдХ (рдЯреАрдПрдо) рдиреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╕реЗ рдПрдХ рдирд╛рдЗрдЯ рдХреА рдЪрд╛рд▓ рдмрдирд╛рдИ - рдЙрд╕рдиреЗ HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдХреИрд╢ рдмрдирд╛рдпрд╛, рдФрд░ рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ ToString () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

(рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐) рдореИрдВ рд╣реИрд╢рдореИрдк рдХреЛ рд╣реИрд╢реИрдк рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдХрдИ рд▓реЛрдЧ рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдпрд╛ рддреЛ рдореИрдВ рдЖрддреНрдордЬреНрдЮрд╛рди рддрдХ рдирд╣реАрдВ рдкрд╣реБрдБрдЪрд╛, рдпрд╛ рдХреБрдЫ рдФрд░, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ред

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдирд╛рдо = рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИрдВред рд╡рд╣ рд╣реИ - рд╣рд╛рд╢рдкреИрдкред Java рдЕрдкрдиреЗ toString () рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ? рд╕рдВрдЧреНрд░рд╣ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдмрд┐рдВрджреБ рдкрд░ - рдареАрдХ рд╣реИ, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВред рднрд╛рд░рддреАрдп рд╢реИрд▓реА рдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ ?

рд╕рдорд╛рдзрд╛рди рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рд░рд▓ рдерд╛ред

  public static String ToString(Hashtable map) { String hta_str = "["; IEnumerator ie = map.Keys.GetEnumerator(); while(ie.MoveNext()) { Object o = map[ie.Current]; if(o is Array) { Array al = (Array)o; hta_str += ie.Current + "=["; for(int jjk=0;jjk<al.Length;++jjk) hta_str += al.GetValue(jjk) + ","; hta_str += "]"; } else hta_str += ie.Current + "=" + o + ","; } hta_str += "]"; return hta_str; } 


рдореИрдВрдиреЗ "рдЬреИрд╕реЗ рдХрд┐ рдХрдмрд╛рдбрд╝ рдореЗрдВ" рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЬрд╣рдордд рддрдХ рдирд╣реАрдВ рдЙрдард╛рдИ - рдореБрдЭреЗ рд╣реИрд╢рдЯреЗрдм @ рдПрдбреНрд░реЗрд╕ рдХреЗ рдмрдЬрд╛рдп рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдореИрдкрд┐рдВрдЧ рдХреА рдЬрд░реВрд░рдд рдереАред

рдореАрдард╛ - рдлреЛрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ


рдЫрд╡рд┐
рдФрд░ рдЕрдВрдд рдореЗрдВ - рдореИрдВ рдПрдХ рдФрд░ рдореЛрддреА рдХреЛ рдЦреБрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдлреЛрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред рдЕрд░реНрдз-рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЬрд╛рджреВ - рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди, рдЪрдпрди, рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рд╕реЗ рдмрд╛рдПрдВ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрд░рдмреА, рдЪреАрдиреА, рдПрд░рд┐рдпрд▓ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдорд╛рдЗрдиреЛ рдФрд░ рдЗрддрдиреЗ рдкрд░ рдФрд░ рдЖрдЧреЗ рдХреЗ рд╕реМрджреЗ рд╣реЛрддреЗ рд╣реИрдВред

рдЖрдзрд╛ рд▓реАрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рдЦрд╛рдирд╛ рдкрд╕рдВрдж рд╣реИ - рдпрд╣ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдерд╛ред

рд╡реИрд╕реЗ, рдпрд╣ рдмреЗрд╣рдж рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдУрдкрди рдЯрд╛рдЗрдк рд╕реНрд╡рдпрдВ рдПрдХ рд╕реАрдЯреА рдХреЗ рд╕рд╛рде рдЦрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди .NET - рдЕрдлрд╕реЛрд╕ред рдпрджреНрдпрдкрд┐ рд╡рд╣ "рд╕реЗрд░реЗрд╡реЗрд▓рдЯ" рдЪрд╛рдВрджреА рдХреА рд░реЛрд╢рдиреА рдореЗрдВ рднрд┐рдиреНрдирддрд╛ рдореЗрдВ рд╣реИ - рд╣рд╛рдБ, рд╣рд╛рдБред рдФрд░ рдпрд╣ 4.0 рдореЗрдВ рд╣реИ, рдкреБрд░рд╛рддрди 1.1 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд╣рдирд╛ рд╣реИ! рдореИрдВ 5.0 рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ - рд╢рд╛рдпрдж рд╡реЗ рд╡рд╣рд╛рдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ? ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдлрд╝реЙрдиреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛ред

 private static void listFonts(DirectoryInfo dd, String mask, Hashtable listOfFontFaces) { FileInfo[] files = dd.GetFiles(mask); FontFamily newFN = null; bool TtC = mask.Equals("*.ttc"); Hashtable foundFonts = new Hashtable(); System.Drawing.Text.PrivateFontCollection tmpPfc = null; for(int jjk=0;jjk<files.Length;++jjk) { tmpPfc = new System.Drawing.Text.PrivateFontCollection(); try { tmpPfc.AddFontFile(files[jjk].FullName); } catch(Exception /* e */) {} for(int jjv=0;jjv<tmpPfc.Families.Length;++jjv) { newFN = tmpPfc.Families[jjv]; FontFamilySpec spec = (FontFamilySpec)foundFonts[newFN.Name]; if(spec == null) { spec = new FontFamilySpec(newFN.Name); foundFonts[spec.Family] = spec; } String fn = files[jjk].Name; if(TtC) fn += "_" + jjv; spec.Files.Add(fn); spec.Files.Sort(); } tmpPfc.Dispose(); } ... } 

рдХреЛрдб рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ , рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ред

рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рдЬрд╛рджреВ рд╣реИ:

 char c = content[ 0 ]; UnicodeCategory prevUB = Char.GetUnicodeCategory(c); int lastCutPosition = 0; for ( int i = 1; i < content.Length; i++ ) { c = content[i]; if ( c == 0xAD || c == ' ') // soft hyphen continue; byte dirct = java.lang.Character.getDirectionality((int)c); if ( dirct == java.lang.Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC || dirct == java.lang.Character.DIRECTIONALITY_RIGHT_TO_LEFT || dirct == java.lang.Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING || dirct == java.lang.Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE ) // sick of fighting with. // the only expected conflict is a combining of chinese and arabic in a single paragraph break; UnicodeCategory ub = Char.GetUnicodeCategory(c); if ( ub != prevUB ) { String pattern = ""; for ( int j = 0; j < content.Length; j++ ) { char ch = content[j]; if ( prevUB == Char.GetUnicodeCategory(c) ) pattern += ch; } ... prevUB = ub; } } ... 

рдпрд╣рд╛рдВ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрдореНрдкреЛрдЯ рдмрд╛рд╣рд░ рдЖрдпрд╛ - рджреЛрдиреЛрдВ рдбреЛрдиреЗрдиреЗрдЯ рдЙрдкрдХрд░рдг рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╛рдгреА рдХреЗ рд▓рд┐рдП - рдЬрд╛рд╡рд╛ 6 рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЕрдирд┐рдЪреНрдЫрд╛ рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдмрд╣реБрдд рд╣реА рдирд╛рдпрд╛рдм рдЯреНрд░рд┐рдХреНрд╕ред

рдЗрд╕ рдордЫрд▓реА рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рдерд╛ред рдореИрдВ рдЕрдкрдиреЗ рд▓рдВрдб рдХреА рдЯреЛрдкреА рдХреА рдХрд╕рдо! (рд╕реА)

рдкрд░рд┐рдгрд╛рдо


рдЫрд╡рд┐
рдХрд╛рд╢ - рдореИрдВрдиреЗ рдЖрд╡рдВрдЯрд┐рдд рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рд╢рд░реНрдордирд╛рдХ рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд╡реЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореИрдВрдиреЗ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдХреЛ рднреА рдкрдХрдбрд╝ рд▓рд┐рдпрд╛, рдФрд░ рдЙрдирдХреЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдмрд╛рджред рдФрд░ рдлрд┐рд░ рдЙрд╕рдиреЗ рдПрдХ-рджреЛ рдмрд╛рд░ рдмрд┐рдирд╛ рд╕реЛрдЪреЗ-рд╕рдордЭреЗ рд░реЗрдХ рдХреЛ рдкрдХрдбрд╝рдХрд░ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ред

рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЗ рдлрд┐рд░ рдореЗрд░реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рднреЗрдЬрд╛, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЬрд▓реНрдж рд╣реА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдорд┐рд▓ рдЧрдпрд╛ред рдореБрдЭреЗ рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдЖрджрд┐ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред

рдореВрд▓ рдХреЛрдб рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рд╕рдордЧреНрд░ рдзрд╛рд░рдгрд╛ рдмрд╣реБрдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рдереАред рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рд╡реЗрдмрдХрд┐рдЯрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╣рдорд╛рд░реЗ рд╕рдордп рдореЗрдВ, рд╕реАрдПрд╕рдПрд╕ 2.1 рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде, HTML 5 рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ HTML 4 рд░реЗрдВрдбрд░ рдХрд░реЗрдВ, рдФрд░ рдпрд╣ рд╕рднреА рд╢реБрджреНрдз рдЬрд╛рд╡рд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреБрд░рд╛рдирд╛ рд╕реНрдХреВрд▓ рд╣реИред

рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдПрдХ рднреА рдЫреЛрдЯрд╛ рдЬрд╛рдирд╡рд░ рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рдирд╣реАрдВ рд╣реБрдЖред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред

Source: https://habr.com/ru/post/In151634/


All Articles