圌ãã®å€èŠã«ã¯äœã®çãããããŸããã ããã«ããããã¯ããªãã«ãšã£ãŠãé·ãéããç¥ãããŠããããã«ããæããŸãã ãã ããããã¯ç¢ºèªãããŸã§ã®è©±ã§ãã ããã§åœŒãã®é°æ¹¿ãªæ¬æ§ãçŸããäºæ³ãšã¯ãŸã£ããç°ãªãåäœãããŸãã ãããŠæã«ã¯ã圌ãã¯é«ªã®æ¯ãéç«ã€ãããªããšãããããšããããŸããããšãã°ã圌ãã«èšãããæ©å¯ããŒã¿ã倱ããããªã©ã§ãã 圌ãã«å¯Ÿå³ãããšã圌ãã¯ãäºãã®ããšãç¥ããªããšäž»åŒµããŸããã圱ã§ã¯åãããŒãã®äžã§ç±å¿ã«åããŠããŸãã ã€ãã«åœŒããããããªæ°Žã«é£ããŠè¡ãæãæ¥ãŸããã ããããäžå¯©ãªã¿ã€ãã«ã察åŠããŸãããã
PostgreSQL ã§ã®ããŒã¿ã®åä»ãã¯ããã®ããžãã¯å šäœããèŠãŠãéåžžã«å¥åŠãªé©ããããããããšããããŸãã ãã®èšäºã§ã¯ã圌ãã®çã®ããã€ããæããã«ãã圌ãã®å¥åŠãªè¡åã®çç±ãç解ããæ¥åžžç掻ã§åé¡ã«ééããªãæ¹æ³ãç解ããããšããŸãã å®ãèšããšããã®èšäºã¯ç§èªèº«ã®ããã®äžçš®ã®åèæžãè«äºã®éã«åç §ããããåèæžãšããŠãŸãšãããã®ã§ããããŸãã ãããã£ãŠãçãããã¿ã€ãããã®æ°ããé©ããçºèŠããããšãè£å ãããŸãã ããã§ã¯ãè¡ããŸããããããç²ãç¥ããã®ããŒã¿ããŒã¹è¿œè·¡è ãã¡!
æžé¡ãã®ïŒã å®æ°/å粟床/æ°å€/é貚
åäœã®æå€æ§ãšããç¹ã§ã¯ãæ°å€åãæãåé¡ãå°ãªãããã«æããŸãã ãããããããã©ã®ãããªãã®ã§ãã£ãŠãã ããã§ã¯ããããããå§ããŸãããã ããã§âŠ
æ°ãæ¹ãå¿ãã
SELECT 0.1::real = 0.1
?column?
boolean
---------
f
ã©ãããã®ïŒ åé¡ã¯ãPostgreSQL ãåãªãå®æ° 0.1 ãå粟床ã«å€æãããããå®æ°åã® 0.1 ãšæ¯èŒããããšããããšã§ãã ãããŠãããã¯ãŸã£ããç°ãªãæå³ã§ãïŒ ã¢ã€ãã¢ã¯ããã·ã³ã®ã¡ã¢ãªå ã§å®æ°ãè¡šçŸããããšã§ãã 0.1 ã¯æéã® 0.0 é²æ°ã®å°æ°ãšããŠè¡šãããšãã§ããªããã (0011 é²æ°ã§ã¯ XNUMX(XNUMX) ã«ãªããŸã)ãæ¡ãç°ãªãæ°å€ã¯ç°ãªããããçµæã¯çãããªããªããŸãã äžè¬çã«ãããã¯å¥ã®èšäºã®ãããã¯ãªã®ã§ãããã§ã¯è©³ããæžããŸããã
ãšã©ãŒã¯ã©ãããæ¥ãã®ã§ãããã?
SELECT double precision(1)
ERROR: syntax error at or near "("
LINE 1: SELECT double precision(1)
^
********** ÐÑОбка **********
ERROR: syntax error at or near "("
SQL-ÑПÑÑПÑМОе: 42601
СОЌвПл: 24
PostgreSQL ã§ã¯åãã£ã¹ãã®é¢æ°è¡šèšãå¯èœã§ããããšã¯å€ãã®äººãç¥ã£ãŠããŸãã ã€ãŸãã1::int ã ãã§ãªããåçã® int(1) ãæžãããšãã§ããŸãã ãã ããååãè€æ°ã®åèªã§æ§æãããã¿ã€ãã®å Žåã¯ããã§ã¯ãããŸããã ãããã£ãŠãé¢æ°åœ¢åŒã§æ°å€ãå粟床åã«ãã£ã¹ãããå Žåã¯ããã®å float8 ã®ãšã€ãªã¢ã¹ãã€ãŸã SELECT float8(1) ã䜿çšããŸãã
ç¡é倧ãã倧ãããã®ã¯äœã§ãã?
SELECT 'Infinity'::double precision < 'NaN'::double precision
?column?
boolean
---------
t
ãããã©ããªãã®ããèŠãŠãã ããïŒ ç¡é倧ããã倧ããªãã®ãååšããããšãå€æããŸããããã㯠NaN ã§ãã åæã«ãPostgreSQL ã®ããã¥ã¡ã³ãã¯ç§ãã¡ãæ£çŽãªç®ã§èŠãŠãNaN ã¯ä»ã®æ°å€ãããæããã«å€§ããããããã£ãŠç¡é倧ã§ãããšäž»åŒµããŠããŸãã -NaN ã«ã€ããŠã¯ãã®éãåœãŠã¯ãŸããŸãã æ°åŠæ奜家ã®çãããããã«ã¡ã¯ïŒ ããããããã¯ãã¹ãŠå®æ°ã®ã³ã³ããã¹ãã§æ©èœããããšãèŠããŠããå¿ èŠããããŸãã
ç®ãäžžããã
SELECT round('2.5'::double precision)
, round('2.5'::numeric)
round | round
double precision | numeric
-----------------+---------
2 | 3
åºå°ãããŸãäºæãã¬æšæ¶ãã ç¹°ãè¿ãã«ãªããŸãããå粟床åãšæ°å€åã«ã¯ç°ãªãäžžãå¹æãããããšã«æ³šæããŠãã ããã æ°å€ã®å Žåã¯éåžžã®æ¹æ³ã§ 0,5 ãåãäžããããå粟床ã®å Žå㯠0,5 ãæãè¿ãå¶æ°ã®æŽæ°ã«äžžããããŸãã
ãéãšããã®ã¯ç¹å¥ãªãã®ã§ã
SELECT '10'::money::float8
ERROR: cannot cast type money to double precision
LINE 1: SELECT '10'::money::float8
^
********** ÐÑОбка **********
ERROR: cannot cast type money to double precision
SQL-ÑПÑÑПÑМОе: 42846
СОЌвПл: 19
PostgreSQL ã«ããã°ããéã¯å®æ°ã§ã¯ãããŸããã äžéšã®å人ã«ãããšããããèšãããŠããŸãã æ°å€åã®ã¿ãé貚åã«ãã£ã¹ãã§ããã®ãšåæ§ã«ãé貚åã®ãã£ã¹ãã¯æ°å€åã«ã®ã¿å¯èœã§ããããšãèŠããŠããå¿ èŠããããŸãã ãããä»ã§ã¯ãå¿ã®æããŸãŸã«éã¶ããšãã§ããŸãã ããããåããéã«ã¯ãªããŸããã
Smallint ãšã·ãŒã±ã³ã¹ã®çæ
SELECT *
FROM generate_series(1::smallint, 5::smallint, 1::smallint)
ERROR: function generate_series(smallint, smallint, smallint) is not unique
LINE 2: FROM generate_series(1::smallint, 5::smallint, 1::smallint...
^
HINT: Could not choose a best candidate function. You might need to add explicit type casts.
********** ÐÑОбка **********
ERROR: function generate_series(smallint, smallint, smallint) is not unique
SQL-ÑПÑÑПÑМОе: 42725
ÐПЎÑказка: Could not choose a best candidate function. You might need to add explicit type casts.
СОЌвПл: 18
PostgreSQL ã¯äºçŽ°ãªããšã§æéãç¡é§ã«ããããšã奜ã¿ãŸããã ãããã®ã·ãŒã±ã³ã¹ã¯ smallint ã«åºã¥ããŠããã®ã§ãããã? intããã以äžã§ãïŒ ãããã£ãŠãäžèšã®ã¯ãšãªãå®è¡ããããšãããšãããŒã¿ããŒã¹ã¯ smallint ãä»ã®æŽæ°åã«ãã£ã¹ãããããšãããã®ãããªãã£ã¹ããããã€ãããå¯èœæ§ãããããšã確èªããŸãã ã©ã®ãã£ã¹ããéžã¶ãïŒ åœŒå¥³ã¯ããã決å®ã§ããããšã©ãŒã§ã¯ã©ãã·ã¥ããŸãã
ãã¡ã€ã«çªå· XNUMXã "char"/char/varchar/text
æåã¿ã€ãã«ãå€ãã®å¥åŠãªç¹ããããŸãã 圌ãã«ã€ããŠãç¥ã£ãŠã¿ãŸãããã
ãããã¯ã©ã®ãããªããªãã¯ã§ããïŒ
SELECT 'ÐÐТЯ'::"char"
, 'ÐÐТЯ'::"char"::bytea
, 'ÐÐТЯ'::char
, 'ÐÐТЯ'::char::bytea
char | bytea | bpchar | bytea
"char" | bytea | character(1) | bytea
-------+-------+--------------+--------
âš | xd0 | Ð | xd09f
ãã®ãã€ã¯ããã¯äœã®çš®é¡ã§ãããããã¯äœã®ããšãã§ããïŒ ãããã¯å¿ èŠãããŸãã...åŒçšç¬Šã§å²ãŸããŠããã«ãããããããéåžžã® char ã§ãããã®ããã«èŠããããŠããããã§ãã ãŸããéåžžã® char ã¯æåã®æåãåºåããã®ã«å¯Ÿããæååè¡šçŸã®æåã®ãã€ãã®ã¿ãåºåãããšããç¹ã§ãåŒçšç¬Šã®ãªãéåžžã® char ãšã¯ç°ãªããŸãã ãã®å Žåãæåã®æåã¯æå P ã§ãããçµæã bytea åã«å€æãããšãããããã«ãUnicode è¡šçŸã§ã¯ 2 ãã€ããå ããŸãã ãããŠããcharãã¿ã€ãã¯ããã® Unicode è¡šçŸã®æåã®ãã€ãã®ã¿ãåãåããŸãã ã§ã¯ããªããã®ã¿ã€ããå¿ èŠãªã®ã§ããããïŒ PostgreSQL ã®ããã¥ã¡ã³ãã«ã¯ãããã¯ç¹å¥ãªããŒãºã«äœ¿çšãããç¹å¥ãªã¿ã€ãã§ãããšèšèŒãããŠããŸãã ãããã£ãŠããããå¿ èŠã«ãªãå¯èœæ§ã¯äœãã§ãã ãããã圌ã®ç®ãèŠãã°ã圌ã®ç¹å¥ãªè¡åã«åºäŒã£ãŠãééãããšã¯ãããŸããã
äœåãªã¹ããŒã¹ã èŠçã®å€ãå¿ã®å€
SELECT 'abc '::char(6)::bytea
, 'abc '::char(6)::varchar(6)::bytea
, 'abc '::varchar(6)::bytea
bytea | bytea | bytea
bytea | bytea | bytea
---------------+----------+----------------
x616263202020 | x616263 | x616263202020
äžããããäŸãèŠãŠãã ããã ãã¹ãŠã®çµæãç¹å¥ã« bytea åã«å€æããŠãããã«äœãããããæ確ã«èŠããããã«ããŸããã varchar(6) ã«ãã£ã¹ãããåŸã®æ«å°Ÿã®ã¹ããŒã¹ã¯ã©ãã«ãããŸãã? ããã¥ã¡ã³ãã«ã¯ããcharacter ã®å€ãå¥ã®æååã«ãã£ã¹ãããå Žåãæ«å°Ÿã®ç©ºçœã¯ç Žæ£ãããŸããããšç°¡æœã«èšèŒãããŠããŸãã ãã®å«æªæã¯å¿ããŠã¯ãªããªãã ãŸããåŒçšç¬Šã§å²ãŸããæååå®æ°ã varchar(6) åã«çŽæ¥ãã£ã¹ããããå Žåãæ«å°Ÿã®ã¹ããŒã¹ã¯ä¿æãããããšã«æ³šæããŠãã ããã ãããå¥è·¡ãªã®ã§ãã
ãã¡ã€ã«çªå· XNUMXã json/jsonb
JSON ã¯ãç¬èªã®çåœãç¶æããç¬ç«ããæ§é ã§ãã ãããã£ãŠããã®ãšã³ãã£ãã£ãš PostgreSQL ã®ãšã³ãã£ãã£ã¯è¥å¹²ç°ãªããŸãã 以äžã«äŸã瀺ããŸãã
ãžã§ã³ãœã³ã»ã¢ã³ãã»ãžã§ã³ãœã³ã éããæããŸã
SELECT 'null'::jsonb IS NULL
?column?
boolean
---------
f
åé¡ã¯ãJSON ã«ã¯ç¬èªã® null ãšã³ãã£ãã£ããããPostgreSQL ã® NULL ã«çžåœãããã®ã§ã¯ãªããšããããšã§ãã åæã«ãJSON ãªããžã§ã¯ãèªäœã NULL å€ãæã€å¯èœæ§ããããããåŒ SELECT null::jsonb IS NULL (äžéåŒçšç¬Šããªãããšã«æ³šæããŠãã ãã) ã¯ä»å㯠true ãè¿ããŸãã
äžæåããã¹ãŠãå€ãã
SELECT '{"1": [1, 2, 3], "2": [4, 5, 6], "1": [7, 8, 9]}'::json
json
json
------------------------------------------------
{"1": [1, 2, 3], "2": [4, 5, 6], "1": [7, 8, 9]}
---
SELECT '{"1": [1, 2, 3], "2": [4, 5, 6], "1": [7, 8, 9]}'::jsonb
jsonb
jsonb
--------------------------------
{"1": [7, 8, 9], "2": [4, 5, 6]}
éèŠãªã®ã¯ãjson ãš jsonb ã¯ãŸã£ããç°ãªãæ§é ã§ãããšããããšã§ãã json ã§ã¯ããªããžã§ã¯ãã¯ãã®ãŸãŸä¿åãããŸãããjsonb ã§ã¯ã解ææžã¿ã®ã€ã³ããã¯ã¹ä»ãæ§é ã®åœ¢åŒã§ãã§ã«ä¿åãããŠããŸãã ãã®ããã1 çªç®ã®ã±ãŒã¹ã§ã¯ãã㌠1 ã«ãããªããžã§ã¯ãã®å€ã [2, 3, 7] ãã [8, 9, XNUMX] ã«çœ®ãæããããåãããŒã§æ§é äœã®æåŸã«è¿œå ãããŸããã
é¡ã«ã€ããæ°Žã飲ãŸãªãã§ãã ãã
SELECT '{"reading": 1.230e-5}'::jsonb
, '{"reading": 1.230e-5}'::json
jsonb | json
jsonb | json
------------------------+----------------------
{"reading": 0.00001230} | {"reading": 1.230e-5}
PostgreSQL ã® JSONB å®è£ ã§ã¯ãå®æ°ã®æžåŒèšå®ãå€æŽãããå®æ°ãå€å žçãªåœ¢åŒã«ãªããŸãã JSON ã¿ã€ãã§ã¯ããã¯çºçããŸããã å°ãå¥åŠã§ããã圌ã¯æ£ããã§ãã
ãã¡ã€ã«çªå· XNUMXã æ¥ä»/æå»/ã¿ã€ã ã¹ã¿ã³ã
æ¥ä»/æå»åã«ãå¥åŠãªç¹ãããã€ããããŸãã ããããèŠãŠã¿ãŸãããã ã¿ã€ã ãŸãŒã³ãæ±ãããšã®æ¬è³ªãããç解ããã°ãè¡åã®ç¹åŸŽã®ããã€ããæããã«ãªããšããããšãããã«äºçŽãããŠãã ããã ãããããããå¥ã®èšäºã§åãäžããŸãã
ç§ã¯ããªãã®ããšãç解ããŠããŸãã
SELECT '08-Jan-99'::date
ERROR: date/time field value out of range: "08-Jan-99"
LINE 1: SELECT '08-Jan-99'::date
^
HINT: Perhaps you need a different "datestyle" setting.
********** ÐÑОбка **********
ERROR: date/time field value out of range: "08-Jan-99"
SQL-ÑПÑÑПÑМОе: 22008
ÐПЎÑказка: Perhaps you need a different "datestyle" setting.
СОЌвПл: 8
ããã§äœãç解ã§ããªããšæãããã§ããããïŒ ãããããŒã¿ããŒã¹ã¯ãããã§æåã«äœãå ¥ããã®ããã€ãŸã幎ãªã®ãããããšãæ¥ãªã®ãããŸã ç解ããŠããŸããã ãããŠåœŒå¥³ã¯ãããã 99 幎 2008 æ XNUMX æ¥ã§ãããšå€æããè¡æãåããŸããã äžè¬ã«ãæ¥ä»ãããã¹ã圢åŒã§éä¿¡ããå Žåã¯ããã®åé¡ã«é¢ãããããŸãããéåžžã«é«ãã€ãå¯èœæ§ããããããããŒã¿ããŒã¹ãæ¥ä»ãã©ã®çšåºŠæ£ç¢ºã«èªèããããéåžžã«æ éã«ç¢ºèªããå¿ èŠããããŸã (ç¹ã«ãSHOW datestyle ã³ãã³ãã䜿çšã㊠datestyle ãã©ã¡ãŒã¿ãåæãã)ã
ããªãã®åºèº«å°ã¯ã©ã¡ãã§ããïŒ
SELECT '04:05 Europe/Moscow'::time
ERROR: invalid input syntax for type time: "04:05 Europe/Moscow"
LINE 1: SELECT '04:05 Europe/Moscow'::time
^
********** ÐÑОбка **********
ERROR: invalid input syntax for type time: "04:05 Europe/Moscow"
SQL-ÑПÑÑПÑМОе: 22007
СОЌвПл: 8
ããŒã¿ããŒã¹ãæ瀺çã«æå®ãããæéãç解ã§ããªãã®ã¯ãªãã§ãã? ã¿ã€ã ãŸãŒã³ã«ã¯çç¥åœ¢ã§ã¯ãªãå®å šãªååããããããã¿ã€ã ãŸãŒã³ã®å€æŽå±¥æŽãèæ ®ãããæ¥ä»ããªããšæ©èœããªããããæ¥ä»ã®ã³ã³ããã¹ãã§ã®ã¿æå³ãæã¡ãŸãã ãããŠãã¿ã€ã ã©ã€ã³ã®æèšèªäœãçåãåŒãèµ·ãããŸã - ããã°ã©ããŒã¯æ¬åœã«äœãèšãããã£ãã®ã§ãããã? ãããã£ãŠãããã§èŠããšããã¹ãŠãè«ççã§ãã
圌ã®äœãåé¡ãªã®ã§ããããïŒ
ç¶æ³ãæ³åããŠã¿ãŠãã ããã ããŒãã«ã« timestamptz åã®ãã£ãŒã«ãããããŸãã ã€ã³ããã¯ã¹ãä»ããããšèããŠããŸãã ãã ãããã®ãã£ãŒã«ãã®éžææ§ãé«ãããããã®ãã£ãŒã«ãã«ã€ã³ããã¯ã¹ãæ§ç¯ããããšãåžžã«æ£åœåãããããã§ã¯ãªãããšãç解ããŠããŸã (ãã®ã¿ã€ãã®ã»ãŒãã¹ãŠã®å€ã¯äžæã«ãªããŸã)ã ããã§ãåãæ¥ä»ã«ãã£ã¹ãããŠã€ã³ããã¯ã¹ã®éžææ§ãäžããããšã«ããŸããã ãããšé©ãã¹ãããšãåãããŸã:
CREATE INDEX "iIdent-DateLastUpdate"
ON public."Ident" USING btree
(("DTLastUpdate"::date));
ERROR: functions in index expression must be marked IMMUTABLE
********** ÐÑОбка **********
ERROR: functions in index expression must be marked IMMUTABLE
SQL-ÑПÑÑПÑМОе: 42P17
ã©ãããã®ïŒ å®éã«ã¯ãtimestamptz åã date åã«ãã£ã¹ãããã«ã¯ãTimeZone ã·ã¹ãã ãã©ã¡ãŒã¿ãŒã®å€ã䜿çšãããŸããããã«ãããåå€æé¢æ°ãã«ã¹ã¿ã ãã©ã¡ãŒã¿ãŒã«äŸåããŸãã æ®çºæ§ã ãã®ãããªé¢æ°ã¯ã€ã³ããã¯ã¹ã§ã¯èš±å¯ãããŸããã ãã®å Žåãåãã£ã¹ããã©ã®ã¿ã€ã ãŸãŒã³ã§å®è¡ãããããæ瀺çã«æå®ããå¿ èŠããããŸãã
ä»ããŸã£ããä»ã§ããªããšã
ç§ãã¡ã¯ãã¿ã€ã ãŸãŒã³ãèæ ®ããŠãnow() ãçŸåšã®æ¥ä»/æå»ãè¿ãããšã«æ £ããŠããŸãã ãããã次ã®ã¯ãšãªãèŠãŠãã ããã
START TRANSACTION;
SELECT now();
now
timestamp with time zone
-----------------------------
2019-11-26 13:13:04.271419+03
...
SELECT now();
now
timestamp with time zone
-----------------------------
2019-11-26 13:13:04.271419+03
...
SELECT now();
now
timestamp with time zone
-----------------------------
2019-11-26 13:13:04.271419+03
COMMIT;
ååã®ãªã¯ãšã¹ãããã©ãã ãæéãçµéããŠããåãæ¥ä»/æå»ãè¿ãããŸãã ã©ãããã®ïŒ å®éã«ã¯ãnow() ã¯çŸåšã®æå»ã§ã¯ãªããçŸåšã®ãã©ã³ã¶ã¯ã·ã§ã³ã®éå§æå»ã§ãã ãããã£ãŠããã©ã³ã¶ã¯ã·ã§ã³å ã§ã¯å€æŽãããŸããã ãã©ã³ã¶ã¯ã·ã§ã³ã®ç¯å²å€ã§èµ·åãããã¯ãšãªã¯æé»çã«ãã©ã³ã¶ã¯ã·ã§ã³ã«ã©ãããããŸãããã®ãããåçŽãª SELECT now(); ã«ãã£ãŠè¿ãããæå»ã«æ°ä»ããªãã®ã¯ãã®ããã§ãã å®éã«ã¯ãçŸåšã®æå»ã§ã¯ãããŸãã...æ£ç¢ºãªçŸåšæå»ãååŸãããå Žåã¯ã Clock_timestamp() é¢æ°ã䜿çšããå¿ èŠããããŸãã
ãã¡ã€ã«çªå· XNUMXã å°ã
å°ãå¥åŠã§ã
SELECT '111'::bit(4)
bit
bit(4)
------
1110
åæ¡åŒµã®å Žåã¯ã©ã¡ãåŽã«ããããè¿œå ããã°ããã§ããããïŒ å·ŠåŽã«ããããã§ãã ãããããã®ä»¶ã«é¢ããŠã¯åºå°ã ããç°ãªãæèŠãæã£ãŠããã 泚æ: åããã£ã¹ããããšãã«æ¡æ°ãäžèŽããªããšãæåŸ ããçµæãåŸãããŸããã ããã¯ãå³åŽãžã®ãããã®è¿œå ãšãããã®ããªãã³ã°ã®äž¡æ¹ã«åœãŠã¯ãŸããŸãã å³åŽã«ãâŠ
ãã¡ã€ã«çªå· XNUMXã é å
NULLã§ãçºç«ããªãã£ã
SELECT ARRAY[1, 2] || NULL
?column?
integer[]
---------
{1,2}
SQL ã§è²ã£ãæ®éã®äººã ãšããŠãç§ãã¡ã¯ãã®åŒã®çµæã NULL ã§ããããšãæåŸ ããŸãã ããããããã«ã¯ãããŸããã§ããã é åãè¿ãããŸãã ãªãïŒ ãã®å ŽåãããŒã¹ã¯ NULL ãæŽæ°é åã«ãã£ã¹ãããæé»çã« array_cat é¢æ°ãåŒã³åºãããã§ãã ãããããªããã®ãé åç«ããé åããªã»ããããªãã®ãã¯ãŸã äžæã§ãã ãã®åäœãèŠããŠããå¿ èŠããããŸãã
èŠçŽããŸãã äžæè°ãªããšã¯ãããããããŸãã ãã¡ããããããã®ã»ãšãã©ã¯ããããããŸã«äžé©åãªè¡çºã«ã€ããŠèªãã»ã©æ¹å€çãªãã®ã§ã¯ãããŸããã ãŸãã䜿ãããããç¹å®ã®ç¶æ³ã§ã®é©çšé »åºŠã«ãã£ãŠèª¬æããããã®ããããŸãã ãããåæã«ãå€ãã®é©ãããããŸãã ãããã£ãŠããããã«ã€ããŠç¥ãå¿ èŠããããŸãã ä»»æã®ã¿ã€ãã®åäœã§ä»ã«å¥åŠãŸãã¯ç°åžžãªç¹ãèŠã€ããå Žåã¯ãã³ã¡ã³ãã«æžã蟌ãã§ãã ãããå ¥æå¯èœãªè³æã«åãã§è¿œå ããŸãã
åºæïŒ habr.com