ç§ã¯
Preplyãããžã§ã¯ãã®CTOã§ããããã¹ãŠã®ããã°ã©ããŒã倢èŠãŠããããšãã€ãŸãåçŽãªãããžã§ã¯ãã®è€éã§è峿·±ãã¿ã¹ã¯ã«ã€ããŠå°ãã話ãããããšæããŸãã
ããæ£ç¢ºã«ã¯ãããžãã¹ã«å°ãç§åŠã远å ããçµæãšããŠå°ãã®å©çãåŸãæ¹æ³ã«ã€ããŠã§ãã ãã®èšäºã§ã¯ãå®éã®ãããžã§ã¯ãã§æ©æ¢°åŠç¿ã䜿çšããã³ã³ããã¹ãã®1ã€ã説æããããšããŸãã
åé¡
ç§ãã¡ã¯Preplyã®ãã¥ãŒã¿ãŒãã©ãããã©ãŒã ã§ããã誰ããç§ãã¡ã欺ãããã§ãã
åœç€Ÿã®ãŠã§ããµã€ãã®ãŠãŒã¶ãŒã¯ããã¥ãŒã¿ãŒã®ç³ã蟌ã¿ãé¢ããæ¡ä»¶ã«åæããåŸããŠã§ããµã€ããéããŠã¬ãã¹ã³ã®æéãæ¯æããŸãã ã¯ã©ã¹ãSkypeã«åå ããå Žåããµã€ããéããŠãã¹ãŠã®æ¯æããåãä»ããŸãã 圌ããã©ã€ãã§äŒãå Žåãç§ãã¡ã®ææ°æã¯æåã®ã¬ãã¹ã³ã®è²»çšã§ãã
ãã¥ãŒã¿ãŒãšåŠçã¯
ãäœããã®çç±ã§ ããµã€ããéããŠã¬ãã¹ã³ã®æ¯æããåé¿ããããšããŸãã ãããè¡ãã«ã¯ãå
éšã¡ãã»ãŒãžã³ã°ã·ã¹ãã ã䜿çšããŸããããã¯ãä»åŸã®ã¯ã©ã¹ã«é¢ãã詳现ãæç¢ºã«ããããã«èšèšãããŠãããã¢ããªã±ãŒã·ã§ã³ãè¬åž«ã«éä¿¡ããåŸã«å©çšã§ããŸãã é£çµ¡å
ã®å
±æã®äŸã次ã«ç€ºããŸãã
ç§ã®ã¹ã«ã€ãã¯vasiliy.pãtel +789123456ã§ãã 4æ1æ¥ã®19:00ã«ïŒ
ããã°ã㯠ããªãã¯ããªãã®çªå·ãæžãããç§ã®+ 78-975-12-34ãåŒã³åºãããšãã§ããŸã
ã¬ãã¹ã³ã®åã«æ¯æããããããŸãããç§ã®ååã¯Vasily Pupkinã§ããVKã§èŠã€ããŠãã ããã
çµéšè±å¯ãªããã°ã©ããŒã¯ããã«
ããã¡ãã»ãŒãžã亀æããããã®å¯èœãªãªãã·ã§ã³ã®æ£èŠè¡šçŸãæžãããšã®åé¡ã¯äœã§ããïŒããšèšã
ã§ãããã åé¡ã¯ãããŸãããããã®ãœãªã¥ãŒã·ã§ã³ã«ã¯ããã€ãã®æ¬ ç¹ããããŸãã
- äžé©åãªïŒã€ãŸããé£çµ¡å
ãå«ãïŒã¡ãã»ãŒãžã®ãã¹ãŠã®ãªãã·ã§ã³ãæäŸããããšã¯å°é£ã§ãã ããšãã°ã補åã®æåã®ããŒãžã§ã³ã§ã¯ãé»è©±çªå·ã®æ£èŠè¡šçŸã®ã»ããããããŸããããæ¬¡ã®åœ¢åŒã®ã¡ãã»ãŒãžãæ©èœãããããã¯ãããŸããã
éææ¥-13 00-15 00-15 15 30 ...ã°ã«ãŒãã¬ãã¹ã³ã®è²»çšã¯ãããã§ããïŒ
ããè€éãªã±ãŒã¹ã§ã¯ãã¡ãŒã«ã«æ£èŠè¡šçŸã䜿çšãããŸããã æ¬¡ã®ãããªã¡ãã»ãŒãžããããã¯ããããšãç®çãšããã¡ãŒã«ã
vasyaïŒdogïŒpupkinïŒdotïŒã
ããããåæã«å®å
šã«ç¡å®³ãªããã¹ãããããã¯ããŸããïŒ
ç§ã¯ç¬ãšããŠè±èªãç¥ã£ãŠããŸããç§ã¯ãã¹ãŠãçè§£ããŠããŸããããããèšãããšã¯ã§ããŸããã
Skypeãšããèšèã¯ããã«è€éã§ããSkypeã亀æããããšãã詊ã¿ãå«ãã¡ãã»ãŒãžãåºå¥ããã®ã¯éåžžã«å°é£ã§ãã
ã¹ã«ã€ãã§ç§ã远å ããŠãã ãã-vasya82pupkin
ã¡ãã»ãŒãžãæç¢ºã«ããããšããïŒ
ããªãã¯ã¹ã«ã€ããŸãã¯ããŒã«ã«ã¬ãã¹ã³ãåãããã§ããïŒ
- ä¿¡é Œã®ãããå€ãå¶åŸ¡ããããšã¯ã§ããŸããã ã€ãŸããã¡ãã»ãŒãžã¯ãããã¯ãããŠãããã©ããã®ããããã§ãã ããžãã¯ã倿Žããã«ã¯ãã³ãŒãã«ç»ãå¿
èŠããããŸãã å®éã«ã¯ãæåã®ã¿ã€ãã®ãšã©ãŒïŒèª€å ±ïŒããã2çªç®ã®ã¿ã€ãã®èª€çïŒã¡ãã»ãŒãžã®ã¹ãããïŒã®æ¹ãã¯ããã«ç°¡åã§ããããã¯ããŠãŒã¶ãŒããµããŒããæžãèª€å ±ã§ã¯ããµããŒããããŒãžã£ãŒã誀ã£ãããããã³ã°ãšãããã¯è§£é€ã®ã¡ãã»ãŒãžã«ã€ããŠè¬çœªããã®ã«æéããããããã§ãããã®ãµãŒãã¹ã䜿çšãããšãã®çãããããçµéšã«èšåããããã äžæ¹ãé£çµ¡å
ã亀æãããŠãŒã¶ãŒã顧客ã«ãªãããšã¯ãã£ãã«ãªãã®ã§ã2çªç®ã®ã¿ã€ãã®ééããç¯ãã®ã¯ç°¡åã§ãããéãmakeããªãããã§ãïŒããã§ããããã¯ããžãã¹ã§ãïŒã
ããæç¹ã§ãããã¯ããã»ã¹ãããç§åŠçã«ããããã«é±æ«ãéããããšã«ããŸããã 以äžã¯ããã®ç±æ¥ã説æããŠããŸãã ç§ã®ç®æšã¯ããã¹ãŠãæ£ãããæ£ç¢ºã«ãç§åŠçã«è¡ãããšã§ã¯ãªããééããªãæ©èœãããåå
¥ã«ãã©ã¹ã®åœ±é¿ãäžããããšã§ããã
解決ç
Andrew Ngã®Coursera Machine Learningã³ãŒã¹ã§èšæ¶ããæ£ãã/æ£ãããªãã¡ãã»ãŒãžãæ£ããåé¡ããããã«ã3ã€ã®æ©æ¢°åŠç¿æ¹æ³ã詊ãããšã«ããŸããã
æåã®åé¡ã¯ããã¬ãŒãã³ã°ã®åºç€ãæºåããããšã§ãã 以åã«å€ãã·ã¹ãã ã§åé¡ããã50,000ãè¶
ããæçš¿ããããŸããã ç§ã¯ãã®ãã¡ã®5,000人ã ããåããåã®ã·ã¹ãã ããã¹ãç¯ããã¡ãã»ãŒãžã®èª€ã£ãåé¡ãä¿®æ£ããããšããŠçŽ2ã3æéè²»ãããŸããã çè«çã«ã¯ãããŒã¹ã倧ããã»ã©è¯ãã§ãããçŸå®ã®äžçã§ã¯ã倧ããªãµã³ãã«ãæåã§æºåããããšã¯éåžžã«å°é£ã§ãïŒèšãæãããšãæ ïŒã
ãµã³ãã«èª¿è£œã®æéã®ãããããã»ã¹ã®åŸ®åŠãªéãã®1ã€ã¯ãããã»ã¹ã®å«çã§ãã ä»ã®äººã®ã¡ãã»ãŒãžãèªãã®ã¯ããŸã䟿å©ã§ã¯ãªãããšãèªããŸãããã®åã«èšèãæ··åããçãããã¡ãã»ãŒãžãèŠããšãã«æ¬è³ªãçè§£ããã«èŠããããã«ããŸããã äŸïŒ
ããã¯ïŒ
2æã«ã¯ã©ã¹ãéå§ãããã®ã§ãããããã¯å¯èœã§ããïŒ 1æã®æ£ç¢ºãªæéãããããŸããã18ïŒ00ããæ©ããªãããšã¯ãããŸãã
次ã®ããã«ãªããŸããïŒ
2æä»¥éã¯ææ¥ããããŸãããïŒ 1æã«ã¯æ£ç¢ºã§ã18ïŒ00ãããæ©ããªããŸãããæãå§ããããšæãããšãã§ããŸãã
ããã¯ïŒ
ç§ã®é»è©±ã圹ç«ã£ãŠããã£ãã§ãã ïŒ012ïŒ345-678é»è©±ãåæããŸããããããšã
次ã®ããã«ãªããŸããïŒ
é»è©±çªå· ç§ã圹ã«ç«ã€ããšãå¬ããæããŸããç§ã®é»è©±ãç§ãã¡ã¯åæããŸããããããšãïŒ012ïŒ345-678
çµæã¯ã5000è¡ã®csvãã¡ã€ã«ã§ãäžæ£ãªã¡ãã»ãŒãžã¯ãŒãã§ããŒã¯ãããæ£ããã¡ãã»ãŒãžã¯1ã§ããŒã¯ãããŸãã ãã®åŸãããŒã¿ã®æäœã«åºã¥ããŠããç®ã§ãåé¡ã«åœ±é¿ãäžããäžé£ã®ã¡ãã»ãŒãžç¹æ§ã決å®ããŸããã
- é»è©±ã®çã;
- é»åã¡ãŒã«ã®çã ã¡ãŒã«
- ã¹ã«ã€ãã®é£çµ¡å
ã®çã;
- URLã®çã;
- 瀟äŒã®çãã ãããã¯ãŒã¯
- æ°åïŒæéãé貚ïŒãä»ããæ£ããåèªã
- ã¡ãã»ãŒãžã®é·ã;
- äžå¯©ãªåèªïŒæ€çŽ¢ã远å ããã€ãã³ã°;
- ...ãªã©ã
ããããã®ç¹æ§ãå®çŸ©ããåŸã次ã®ãããªããã€ãã®æ£èŠè¡šçŸãäœæããŸããã
import re SEPARATOR = "|" reg_arr = [ re.compile(u'|facebook|linkedin|vkontakt|',re.IGNORECASE | re.UNICODE), re.compile(u'.{1,10}', re.UNICODE)] re.compile(u'[^]|skype', re.IGNORECASE | re.UNICODE), re.compile(u'', re.IGNORECASE | re.UNICODE), re.compile(u'[Ñ].*\s[a-zZ-Z]', re.IGNORECASE | re.UNICODE), re.compile('\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]??\d{4}|\d{3}[-\.\s]??\d{4}'), ... re.compile('http|www|\.com', re.IGNORECASE), re.compile(u'|my', re.IGNORECASE | re.UNICODE), re.compile(u'|find', re.IGNORECASE | re.UNICODE), re.compile(u'|add', re.IGNORECASE | re.UNICODE), ... re.compile('\w+@\w+', re.IGNORECASE), re.compile('.{0,50}', re.IGNORECASE), re.compile('.{50,200}', re.IGNORECASE), .... ] def feature_vector(text): return map(lambda x: 1 if x.search(text) else 0, reg_arr) fi=open('db_machine.csv', 'r') fo=open('db_machine_result.csv', 'w') for line in fi: [text, result] = line.split(SEPARATOR) output = feature_vector(text).append(result) fo.write(",".join(map(lambda x: str(x), output )) + "\n") fo.close() fi.close()
ãããã£ãŠããã¹ãŠã®ç¹æ§ïŒçŸåšçŽ100åïŒã®ãã¹ãŠã®ã¡ãã»ãŒãžãåŠçããåŸãç¹æ§ã®ãã¯ãã«ãšåé¡çµæããã¡ã€ã«ã«æžã蟌ã¿ãŸãã
ããŒã¿ãæºåããåŸããµã³ãã«ã3ã€ã®éšåã«åå²ããå¿
èŠããããŸãããã¬ãŒãã³ã°ïŒãã¬ãŒãã³ã°ã»ããïŒããã©ã¡ãŒã¿ãŒã®éžæïŒã¯ãã¹æ€èšŒã»ããïŒãããã³æ€èšŒïŒãã¹ãã»ããïŒã§ãã ã³ãŒã¹ããã®ã¢ããã€ã¹ã«åŸãããã¬ãŒãã³ã°ãµã³ãã«ã®ãµã€ãºããã©ã¡ãŒã¿ãŒã®éžæããã¹ãã¯æ¯ç60/20/20ã§çžé¢ãããŸãã
import random with open('db_machine_result.csv','r') as source: data = [ (random.random(), line) for line in source ] data.sort() n = len(data) with open('db_machine_result_train.csv','w') as target: for _, line in data[:int(n*0.60)]: target.write( line ) with open('db_machine_result_cross.csv','w') as target: for _, line in data[int(n*0.60):int(n*0.80)]: target.write( line ) with open('db_machine_result_test.csv','w') as target: for _, line in data[int(n*0.80):]: target.write( line )
次ã«ãè»èŒªãåçºæãããå¯èœãªéãè¿
éã«çµæãåŸããšããååã«åºã¥ããŠãæ©æ¢°åŠç¿ã³ãŒã¹ã©ã®ã¹ã¯ãªããã䜿çšããããžã¹ãã£ãã¯ååž°ãSVMããã¥ãŒã©ã«ãããã¯ãŒã¯ã¢ã«ãŽãªãºã ã䜿çšããŠãµã³ãã«ãå®è¡ããŸããã ã¹ã¯ãªããã¯åã«ã³ãŒã¹ããååŸãããŸããããšãã°ãSVMã¯æ¬¡ã®ããã«ãªããŸãã
clear ; close all; clc data_train = load('db_machine_result_train.csv'); X = data_train(:, 1:end-1); y = data_train(:,end); data_val = load('db_machine_result_cross.csv'); Xval = data_val(:, 1:end-1); yval = data_val(:,end); data_test = load('db_machine_result_test.csv'); Xtest = data_test(:, 1:end-1); ytest = data_test(:,end); [C, sigma] = dataset3Params(X, y, Xval, yval);
svmTrain / svmPredict颿°ãã©ã®ããã«
ã³ãŒã¹ã®ãŠã§ããµã€ãã§å®è£
ãããŠããããããšãã°
ãã¡ããã芧ãã ãã ã
亀差æ€å®ãµã³ãã«ã®ãã¹ãŠã®ã¢ã«ãŽãªãºã ã¯ãå
éšãã©ã¡ãŒã¿ãŒïŒæ£ååã®
λ ãã¬ãŠã¹é¢æ°ã®
Ï ã
C ããã¥ãŒã©ã«ãããã¯ãŒã¯ã®é ãå±€ã®ãµã€ãºã®ãµã€ãºïŒããœãŒãããŸããã ãããã®ããã€ãã®æçµçãªç²ŸåºŠã®çµæã以äžã«ç€ºããŸãã
ãã¥ãŒã©ã«ãããã¯ãŒã¯ | ããžã¹ãã£ãã¯ååž° | SVM |
---|
ãµã€ãº= 30ãλ= 1 | ãµã€ãº= 30ãλ= 0.01 | ãµã€ãº= 30ãλ= 0.001 | λ= 0 | λ= 0.01 | λ= 1 | ç·åœ¢ïŒÎ»0.001ãÏ= 0.001ïŒ | ã¬ãŠã¹ïŒÎ»0.1ãÏ= 0.1ïŒ | ã¬ãŠã¹ïŒÎ»0.001ãÏ= 0.001ïŒ |
96.41ïŒ
| 97.88ïŒ
| 98.16ïŒ
| 97.51ïŒ
| 97.88ïŒ
| 98.16ïŒ
| 96.48ïŒ
| 97.14ïŒ
| 98.89ïŒ
|
ããã§ã¯ãã·ã¹ãã ãæºåããéçšã§çµæãéåžžã«æªãïŒããšãã°SVMã§96.6ïŒ
ïŒããããã°ãéåžžã«å
·äœçãªæ¹åãè¡ã£ãããšãæç¢ºã«ããå¿
èŠããããŸãã ãµã³ãã«å
šäœã®å®éã®ããŒã¿ã§æãåçŽãã€é«éãªããžã¹ãã£ãã¯ååž°ãéå§ããåé¡çµæãä¿®æ£ããŸããã ã±ãŒã¹ã®30ïŒ
ã§äººã«ããã¡ãã»ãŒãžã®åé¡ã«ãšã©ãŒããã£ãããïŒç§ãæžããããã«ãç§ã¯ã5000ã®ã¡ãã»ãŒãžãèŠãŠã倿ãããšãããã©ããã§30-40ã®åé¡ãšã©ãŒãèµ·ãããïŒãã·ã¹ãã ãã¹ãŠãæ£ããåé¡ããŸããã ãããã°äžã«ãããŒã¿ããŒã¹ã®ãšã©ãŒãä¿®æ£ãããããã¡ãœããã®ç²ŸåºŠãåäžããŸããã ããã«ãè峿·±ããã¿ãŒã³ãã·ã¹ãã ã«ãã£ãŠåŠçãããªãããšãããã£ãå Žåã¯ãç¹æ§ãã¯ãã«ãæ¡åŒµããŸããã
SVMã¡ãœããã䜿çšããããšãéžæããŸãããäžè¬çãªãµã³ãã«ã®ç¹æ§ã¯æ¬¡ã®ãšããã§ãã
ã¡ãã»ãŒãž
| äºå®
|
æ£è§£
| ééã£ãŠãã
|
äºæž¬
| æ£è§£
| 4998 | 36 |
ééã£ãŠãã
| 11 | 390 |
ã·ã¹ãã ã«ã¯ã¯ã©ã¹ãæªãã ã¯ã©ã¹ã§ãããšããç¹æ§ããããããã¢ã«ãŽãªãºã ãæ¯èŒããããã®ãã©ã¡ãŒã¿ãŒãæå®ããŸãã
粟床 | ãªã³ãŒã« | 粟床 |
---|
99.28ïŒ
| 99.78ïŒ
| 99.13ïŒ
|
æçµçã«ãSVMãšã¬ãŠã¹é¢æ°ã®ã³ã¢ã䜿çšããŠããµã€ãäžã®ã¡ãã»ãŒãžããã£ã«ã¿ãŒåŠçããããšã«ããŸããã ããžã¹ãã£ãã¯ååž°ãããè€éã§ãããåäœã¯é
ããªããŸãããããªãè¯ãçµæãåŸãããŸãã
å®å
šãªã¡ãã»ãŒãžåŠçãã¹ã¯æ¬¡ã®ãšããã§ãã
- ãŠãŒã¶ãŒã¯ãµã€ãã§ã¡ãã»ãŒãžãéä¿¡ããBackbone JSã¯ã¯ã©ã€ã¢ã³ãã®ãã·ã³ã§ã¢ãã«ãäœæããPOSTèŠæ±ããµãŒããŒAPIã«éä¿¡ããŸãã
- Django TastyPieã§èšè¿°ããããµãŒããŒAPIã¯ãDjangoã¢ãã«æ€èšŒãã©ãŒã ã䜿çšããŸãã
- æåã®ããªããŒã¿ãŒã¯ãããŒã¿ããŒã¹ãããŠãŒã¶ãŒãããã¡ã€ã«ãååŸãããŠãŒã¶ãŒã䟵å
¥è
ãšããŠããŒã¯ãããŠãããã©ããã確èªããŸãïŒ403å¿çãããã«ç¢ºèªããå¿
èŠã¯ãããŸããïŒã
- svmPredictããªããŒã¿ãŒã¯ãã¡ãã»ãŒãžã®ããã¹ãããã§ãã¯ããçµæãè¿ããŸãã ãŠãŒã¶ãŒãã«ãŒã«ã«éåããŠããå Žåã察å¿ãããã©ã°ããããã¡ã€ã«ã«èšå®ãããŸãããã以å€ã®å Žåã¯ãã¹ãŠæ£åžžã§ããããŠãŒã¶ãŒã¯APIãã201å¿çãåãåããã¡ãã»ãŒãžãããŒã¿ããŒã¹ã«æžã蟌ãŸããŸãã
- ã¡ãã»ãŒãžã«é£çµ¡å
ãå«ãŸããŠããå ŽåããŸãã¯ãŠãŒã¶ãŒã䟵å
¥è
ã§ãã£ãå Žåã403å¿çãã¯ã©ã€ã¢ã³ãã«è¿ãããŸãããããåä¿¡ãããšãBackboneã¯ãŠãŒã¶ãŒã«ã«ãŒã«éåã®ã¡ãã»ãŒãžã衚瀺ããŸãã ããŒã¿ããŒã¹å
ã®ãŠãŒã¶ãŒã¯äŸµå
¥è
ãšããŠããŒã¯ãããŠããŸãã
ãããŸã§ã®ãšãããããã¯ããŸãæ©èœããŠãããããã«æºè¶³ããŠããŸãã
çµè«
æ©æ¢°åŠç¿ãå€ãã·ã¹ãã ãããããŸãæ©èœããçç±ãçè§£ããã®ã¯éåžžã«ç°¡åã§ã-å°éå®¶ã®èгå¯ã§ã¯é ãããŠããç¹æ§éã®é¢ä¿ãæããã«ããŸãã ããšãã°ãã€ãã³ãã«æ£èŠè¡šçŸãšããã€ãã®ifæ¡ä»¶ããããŸãããããã¹ãã«ããªã«æåãšã©ãã³æåããããæ°æ¡ã§ã¡ãã»ãŒãžãçãå Žåãããã¯ã»ãšãã©ã®å Žåãé£çµ¡å
ã®äº€æã§ãã ããã§ãåã
ã®ã€ãã³ããæ°ããã ãã§ãã·ã¹ãã èªäœãã€ãã³ãéã®é¢ä¿ãçè§£ãââã代ããã«ã«ãŒã«ãäœæããŸãã
çŸåšãç§ãã¡ã¯æ¬çªç°å¢ã§å®éã«SVMã䜿çšããŠã粟床ã®è¯ãã€ã³ãžã±ãŒã¿ã«ããã¡ãã»ãŒãžãåé¡ããŠããŸãã éåžžã«ç°¡åãªæ¹æ³ã§äœ¿çšããŸããæé©ãªã¢ãã«ã®éã¿ã®ã»ãããååŸããäžèšã®Pythonã«ç§»æ€ãããsvmPredict颿°ã䜿çšããŠåé¡ããŸãã çæ³çãªäžçã§ã¯ã管çè
ãåé¡ãšã©ãŒãææããã·ã¹ãã ãéã¿ã調æŽããŠæ¹åã§ããããã«ãæåž«ãšãã£ãŒãããã¯ã·ã¹ãã ãäœæããå¿
èŠããããŸãã ããããç§ãã¡ã®ãããžã§ã¯ãã¯ãæé=ãéã®çŸå®ã®äžçã«äœãã§ããããããŸã§ã®ãšãããäžæ£ãªãããã¯ã«é¢ãããµããŒããªã¯ãšã¹ãã®æ°ã2åã«æžã£ããšããäºå®ã楜ããã§ããŸãã ãŸããä¿¡é Œã®ãããå€ãšãããã«å¿ããŠãæåãš2çªç®ã®ã¿ã€ãã®ãšã©ãŒã®ãã©ã³ã¹ããšãããšã¯è峿·±ãèãã§ããããããŸã§ã®ãšããããã¹ãŠãç§ãã¡ã«åã£ãŠããŸãã ãã¡ãã»ãŒãžã®ã¹ãããããªã©ã®ãšã©ãŒã®æ°ã枬å®ããããšã¯éåžžã«å°é£ã§ãã ã·ã¹ãã ã®å°å
¥åŸã®ã¢ããªã±ãŒã·ã§ã³ã®æ¯æããžã®å€æãèœã¡ãŠããªãããšã®ã¿ãæç¢ºã«ããŸãã èšãæãããšããã¹ãå€ããŠããããã¯ããžãã¹ã«åœ±é¿ããŸããã ããããç®ã«èŠãããã¹ã¯å°ãªãã£ãã ãããã£ãŠãããã¯é±æ«ã«ããã£ãŠéåžžã«è¯ãçµæã§ãã
ãããã¯ãããªãã«ãšã£ãŠè峿·±ããã®ã§ããå Žåãç§ãã¡ãè¡ããã¥ãŒããªã¢ã«ã®æšå¥šäºé
ã«å¯Ÿããå調ãã£ã«ã¿ãªã³ã°ã®ã¢ãããŒãã«ã€ããŠæžãæºåãã§ããŠããŸãã ã³ãŒããå¿
èŠãªå Žåãé£çµ¡ããŠãã ãã-ç§å¯ã¯ãããŸããããèšäºã§ã¯ãã€ãã©ã€ã³ã«ã€ããŠè©³ãã説æããããšæããŸãã
PSïŒç§ãã¡ã¯æé·ããŠããŸããå°æ¥çã«ã¯ãããšããªãã£ã¹ã§2人ã®åªç§ã§è²¬ä»»ããããã°ã©ããæ¢ããŠããŸãã Python / DjangoãšJS / Backboneã®ã¹ã¿ãã¯ã å€ãã®è峿·±ãã¿ã¹ã¯ãšãã¹ããã©ã¯ãã£ã¹ã
ã¡ãŒã«dmytro@preply.com