Покажи Публикации - gat3way
* Виж публикациите на потр. | Виж темите на потр. | Виж прикачените файлове на потр
Страници: 1 ... 3 4 [5] 6 7 ... 409
61  Програмиране / Общ форум / Re: Правилно ли е това поведение на Python set -: Feb 24, 2016, 11:01
Цитат
>>> set(x)
set([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9]

А, за това е виновен __repr__(), не __str__()

Както и да е, те и да го оправят да следва 1:1 документацията, ти като си напишеш нещото, няма да имаш гаранция на какъв питонски интерпретатор ще върви, та ако силно разчиташ на правилното поведение би било добре да си направиш собствен клас set, който се държи правилно.
62  Програмиране / Общ форум / Re: Правилно ли е това поведение на Python set -: Feb 23, 2016, 01:22
Не, той генератора не може да се "смята", може само да се итерира. В този случай очевидно идеята е била да присвоиш генератора и да можеш впоследствие да итерираш това което е от лявата страна. То и според мен така ми изглежда далеч по-логично поведение де.

Що се отнася до map, щях да напиша че няма как да стане защото това просто създава списък от резултатите на функция викната върху елементите на нещо което да е iterable...но пък на второ четене ми хрумна нещо и пробвах и очевидно може:

Цитат
>>> map(int,xrange(1,5))
[1, 2, 3, 4]

63  Програмиране / Общ форум / Re: Правилно ли е това поведение на Python set -: Feb 22, 2016, 01:46
Ами "произволен" и "случайно избран определен елемент" не се припокриват на 100%, но ако трябва да спорим доколко са взаимозаменяеми, ще отекат нещата.

range() в питон 3 е xrange() в питон 2 и е обяснимо защо не връща list-а. Това е интересен въпрос обаче, защото и на мен ми беше едно от нещата в този език (то не е специфично питонска парадигма де), за които ми трябваше време да ги осмисля като хората. Но са относително фундаментални там.

Краткия отговор е че xrange() е генератор. В смисъл пак си е обикновена функция, но в реализацията й никъде нe се return-ва нищо,  съответно няма как да се eval-не и да ти върне резултат. Всъщност, кода вътре в тази функция изобщо не се изпълнява когато я извикаш, веднага ти се връща генератор.

Това е понеже вътре във функцията, вместо return, има yield. Смисълът от това е когато тръгнеш да я итерираш (генераторът е iterable). Това обаче става по малко странен начин - когато итерираш първият елемент, кода на функцията се изпълнява и връща резултата от първия срещнат yield. Всяка следваща итерация "продължава" изпълнението на функцията от следващият ред код след yield-а, докато не срещне следващият yield и съответно не върне следващия резултат. Ефективно това означава, че резултатите ти се генерират on-the-fly, вместо да се връща един списък, който да итерираш, това има понякога радикални последствия (при големи списъци най-вече). Еквивалентът на нещо подобно в C би бил реализиран по някакъв касапски и склонен на грешки начин с нещо от сорта на setjmp()/longjmp() - нормалните хора гледат да си нямат вземане-даване с това.


Що се отнася до това какво ти вади print за типа set - както казах в питон всичко е обект, всички типове са класове, това което пропуснах да спомена е че по "конвенция" има няколко "служебни" метода, които никой не ти пречи да overload-неш, такъв е __str__(). Последният връща "printable" версия на обекта и е нещото, което print вади. Та за моя пример с "коректния set", просто трябва да си дефинираш и __str__() метода и да връщаш какъвто си искаш низ, въпросния ще го изпише print. Съответно да връщаш нещото опаковано в къдрави скоби вместо квадратни, няма проблем.

64  Програмиране / Общ форум / Re: Правилно ли е това поведение на Python set -: Feb 21, 2016, 01:53
Аз пък даже не знаех че съществували set-ове в python.

Обаче не ме учудва толкова, то питона си е омазан език за мазане, еле пък и документацията да очакваш да е винаги коректна.

Хубавото е че абсолютно всички типове всъщност са класове и абсолютно всичките им методи са виртуални, малка гавра с ООП концепцията.

Та ако искаш да си направиш тип set, който да се държи "коректно" няма да е сложно да унаследиш set и да му направиш свой си pop() метод дето работи коректно, нещо от сорта на:

Код:
class myset(set):
   def pop(self):
      # Дали пък няма някакъв len атрибут дето да връща броя елементи в set-а, не знам, така че да го правим по тъпия начин
      len = 0
      for el in self:
           len += 1
      toremove = random.randrange(0,len)
      i=0
      result = None
      for el in self.copy():
          if i == toremove:
              result = el
              self.remove(el)
          i+=1   
     return result

...

orig_set = {"a","b","c"}
proper_set = myset(orig_set)
proper_set.pop()


Или нещо от сорта. В смисъл надращих го набързо (единствено проверих дали set-овете са iterable) и изобщо не съм го тествал, та може и да има грешка някъде, отделно не е оптимално, но въпросът е да се илюстрира идеята в крайна сметка.

И да, пачваме нещо дето трябва да работи както е документирано, но както става ясно не го прави.
65  Сигурност / Системна Сигурност / Re: FireFox добър браузер ... помислете си пак -: Feb 18, 2016, 00:42
Аха, лисицата има определени предимства от гледна точка на троленето из нета. Далеч по-лесно можеш селективно да триеш кукита, далеч по-лесно и бързо се сменят прокси настройки, в developer конзолата можеш да копираш заявки като curl команди (не знам дали и хрома не го можеше това де), абе въобще като цяло когато някой ден мечтата ми се сбъдне и отворя най-успешното troll factory в България, ще обучавам и държа служителите си на firefox-а.
66  Сигурност / Системна Сигурност / Re: FireFox добър браузер ... помислете си пак -: Feb 16, 2016, 00:32
Има наистина потенциал в мобилните платформи - голямата изпитва ненавист към всякакви компютърни игри и честно казано изобщо не се справя с гейменето, аз на нейната възраст бях далеч по-добре. Днес обаче не знам точно по какво стечение на обстоятелствата си дръпнах droid shooter просто да видя какво става, в този момент терористчето идва и ме гледа и вика "какво е това", викам "играя". Гледа 1-2 минути след това реши да се пробва....и след малко я гледам как се върти като муха без глава из стаята и се хили на фона на някаква пукотевица, не мога да си взема обратно телефона поне час. Бях доста учуден от цялата работа. Обаче в крайна сметка й писна де.
67  Сигурност / Системна Сигурност / Re: FireFox добър браузер ... помислете си пак -: Feb 14, 2016, 15:40
Абе наистина по принцип идеята не е шит, обаче всичките усилия се хвърлят да изглежда добре на някакъв 4-инчов дисплей, като го гледаш това на големия монитор така добре се преподреждат нещата, че навигацията става рядко отвратителна и на никой не му пука за това, защото е важно да сме мобилни.
68  Сигурност / Системна Сигурност / Re: FireFox добър браузер ... помислете си пак -: Feb 14, 2016, 02:07
Цитат
Сайтовете същото лайно -- плескаш една голема картинка, и скролвай надолу ще наизскачат големи надписи. Дали са clickable, не става ясно докато не опиташ. Бутони? нема таквиз глезотии. Не се знае нещо може ли да се цъкне или не може.

Еми то повечето дизайнери са си педерасти, в смисъл не хомосексуалисти щото нищо против тях нямам, ами педерасти, това е причината за масовата истерия на някакви тотално отвращаващи явления, докарани до крайност. Обаче някак повече ядвам днешните глупости като гореописаната или великия шит с responsive дизайна и лайното напльокано с bootstrap дето изглежда отвратително грозно освен ако не го гледаш на някакъв шибан телефон. Поне в сравнение с по-стари подобни експерименти от сорта на blink таговете и скролващите се тъпизми на фона на тъмни разчекнати растерни графики от 90-те, сайтовете изцяло на флаш от миналото десетилетие или дори малоумната мода като дойде зима да се сипят снежинки по екрана. В смисъл педерастите въобще не са особено оригинални хора напротив на това колко креативни се изкарват, винаги следват една и съща педерастка тъпащина като стадо блеещи овце докато някой не измисли следващата такава педерастка тъпащина.
69  Сигурност / Системна Сигурност / Re: FireFox добър браузер ... помислете си пак -: Feb 13, 2016, 00:37
Ами firefox наистина изглежда инфантилно на фона на параноидната шизофрения в chrome - и да, наистина всичко върви в рамките на един процес съответно в едно адресно пространство (поне под линукс).

Преди 2-3 години гледах един експлойт за core-а на chrome, не в плъгини някакви, беше точно от някакво такова състезание и беше пълно извращение - stage-нати няколко уязвимости, част от тях 0-day, беше някаква велика конспирация и зло стечение на обстоятелствата, почупваха renderer процеса и някак се измъкваха от seccomp филтъра, за да изпълняват системни извиквания и да мажат по хоста. Това не знам кой ги измисля такива неща, трябва да им е в кръвта да са зли аферисти и конспиратори, за да творят такива извращения.
70  Хардуер за Линукс / Сървъри / Re: Десктоп виртуализация!!!? Какви са възможностите за безплатни решения!!!!? -: Feb 11, 2016, 11:14
Цитат
Гейт, без да претендирам дали е правилно или не, но разсинхронизираният В/И съвсем натрапчиво ни се бута в носовете последните години, като посланието е ясно — от тук нататък нищо друго. Трябва да свикваме, че забавяния и латентност, ще са част от живота ни.

Всъщност не е така, асинхронния и неблокиращ вход/изход е начина да се реализира услуга, която да държи висок брой паралелни връзки, хората са стигнали до този извод много отдавна, справка знаменития c10k проблем. Никой не е казал "оттук нататък нищо друго".

Цитат
Та питането ми е всъщност такова. В този прочут Торнадо, дето ни го тикат (имам щастието вече да не пиша на Питон) и дето не се спогажда с никоя библиотека за изпращане на поща, не може ли да се направи нещо. Съгласен съм, че протокола е стар и академичен, което го прави неприятен. Но след като тази работа е свършена отдавна, не може ли за целите си на проекта да направите изменение само във входа и изхода на библиотеката, като основната функционалност да си остане? Аз се чудя, как така никой не се е блъскал над този въпрос.


Кое е входа и кое е изхода?


Цитат
Освен това аз като по-прост, май не бих правил тази задача с библиотеки, а бих я оставил на един външен server да се оправя. И като си получа обратно писмото да си го извадя от опашката и пратя там натам, дето ми трябва. Много по-просто ми се струва, отколкото да се занимавам с нишки. А както казах, аз досега с нишки не съм се занимавал и всяват в мен ужас. Откъде да знам машината, на която ще се изпълнява, колко нишки може да понесе, че да знам, колко да пусна.

Разбира се, може някакъв демон да разпраща пощи (с някакъв IPC механизъм) - това всъщност има доста предимства - обаче проблемът с вземането на статуса от операцията става още по-оплетен. Алтернативно решение (което някои хора много обичат) е да хванат да си напишат друг уеб сървис, чиято идея е да праща пощи. Което е друга идея - няма да блокираш цикъла дето poll-ва сокети в уеб приложението наистина, просто ще заметеш боклука в посока друго уеб приложение и ще създадеш същия проблем там (поне ще е ограничен в рамките на частта с "пращането на поща", няма да е проблем на цялото уеб приложение дето го гледат потребителите). Резултатът от цялата тази история обаче не ми допада - цялата тази фантасмагория с микросървисите дето размотават по http форматирани и опаковани по всякакъв начин бози, накрая това има склонността да му забравиш откъде почва и къде свършва и става като теория на сложния процес. Предполагам и от чисто административна гледна точка, менажирането на този контролиран хаос не е много приятно, не знам. Обаче това също е и модерна работа и за мой ужас става все по-модерна и по-модерна.

71  Хардуер за Линукс / Сървъри / Re: Десктоп виртуализация!!!? Какви са възможностите за безплатни решения!!!!? -: Feb 11, 2016, 01:25
Цитат
Точно след една седмица, като го позабравя, почвам пак да се чудя как точно работи собствения ми код :o. А ако имах едно просто sleep() на критичното място нещата се опростяваха 10 пъти.

Хахаха да, изисква леко извратено мислене, не мисля че човешкият мозък (поне моя де) функционира така. Това не е върха на извращението в това отношение, моят фаворит засега е един питонски framework, tornado, който е специално правен с идеята да реализираш асинхронни event-базирани уеб услуги. Там извращението е докарано до принципно ново ниво и "нормалното последователно" изпълнение (т.е примерно да викнеш sleep() без да даваш callback функция дето да се вика след като се "наспи") може все пак да се "емулира" - което обаче не е толкова хубаво - аз сериозно предпочитам варианта с колбеците. Всъщност, може би самата постановка, сървърно приложение вместо клиентско такова, предизвиква сама по себе си извращенията, заради различните изисквания. Там върховната ценност е да не блокираш никъде ioloop-а - при което стигаш до абсурдни ситуации понеже като ти трябва нещо извън tornado-то, почти всички налични средства и библиотеки не са мислени да работят асинхронно (т.е най-малкото да ти дават един сокет дето да можеш да го добавяш към set-а който се poll-ва от ioloop-а). Та сега стигаме до простия пример в който искаш приложението ти да изпрати мейл. И понеже всички възможни библиотеки за целта не са мислени така, съществуват два варианта: да хванеш и сам да си напишеш smtp библиотека, която да работи асинхронно (успех предвид че протоколът не е чак толкова прост и има вариации за автентикация, TLS и т.н) или по-простото....хващаш и пращаш поща както си знаеш, само че в отделна нишка. Сега обаче отворен става въпроса какво става ако нещо в нишката гръмне и ти трябва резултата от изпращането на пощата, ами настава забава.

72  Хардуер за Линукс / Сървъри / Re: Десктоп виртуализация!!!? Какви са възможностите за безплатни решения!!!!? -: Feb 10, 2016, 12:23
sleep-а не мисля че е голяма драма да го реализираш с нещо от сорта на setTimeout() обаче мен цялата тази event-базирана "парадигма" с асинхронни заявки, събития и callback функции ми идва на моменти в повече.
73  Хардуер за Линукс / Сървъри / Re: Десктоп виртуализация!!!? Какви са възможностите за безплатни решения!!!!? -: Feb 09, 2016, 10:35
backinblack, проблемът е че имаш грешни очаквания, които почиват на грешни хрумвания, понеже нещата не работят така. Видеокартата не чертае линии, квадратчета и кръгчета с порядъци по-бързо, причината да изнесат тази функционалност натам е за да се спести прехвърляне на огромни количества памет през "бавни" за целта шини. Това което виждаш на монитора е съдържанието на видеопаметта, "класическият" случай в който нямаме никакво видеоускорение, "рисуването" се изчерпва с мазане по един буфер в RАМ-та и последвало копиране на този буфер върху видеопаметта (съответно с ограниченията за bandwidth и латентност на шината). Когато резолюциите са започнали да нарастват далеч по-бързо от способностите на шината да пренася данни, хората са ударили греда. Тогава някой се сетил "абе що не направим видеокартите по-умни и да ги караме директно да си чертаят върху видеопаметта вместо да копираме огромни буфери памет" и така в общи линии са се пръкнали нещата. Ето примерно при OpenGL, там няма нужда да прехвърляш абсурдни обеми памет, а казваш "нарисувай ми тези линии и квадратчета с тези и тези координати" и вместо да хвърчат мегабайтите по шината, отиват някакви килобайти шейдърен код.

Сега в последните години нещата се промениха с 3D сметките, но това не касае CAD програмите ти.

Поради същата причина няма да намериш VDPAU-ускорено транскодиране на MPEG4 видеа, щото няма смисъл - усилието да копираш компресираното видео във видеопаметта, да накараш картата да ти го разкомпресира, само за да го копираш обратно на хост паметта където да го обърнеш в друг формат обезсмисля нещата.

Та твоят проблем е съвсем различен - тебе изобщо не те касае визуализацията на нещата на хост машината и поради тази причина видеоускорението вместо да ти помага, ти пречи, просто защото включва ненужни трансфери на памет до графичната карта и обратно. Това е и причината ESX-а да не ti "виртуализира" хардуерното видеоускорение, понеже в случая резултатът е че вместо да помогне, пречи. Това не е защото технологията не била разбираш ли достатъчно напреднала.

74  Хардуер за Линукс / Сървъри / Re: Десктоп виртуализация!!!? Какви са възможностите за безплатни решения!!!!? -: Feb 08, 2016, 18:03
Потребителските интерфейси много удобно се описват с такива "недъгави" средства катo markup езици, HTML е просто пример - потребителския интерфейс в андроид приложенията също се описва като XML (или динамично се инстанцират обекти, но ти същото го правиш и с js де). XAML-а на майкрософт, QML-а на Qt, на JavaFX-а дивотиите доколкото знам са същата история, макар че там някой по-запознат трябва да се изкаже, та нищо странно. Та не е глупав подхода и вебаджийницата няма да умре скоро, дори напротив.
75  Хардуер за Линукс / Сървъри / Re: Десктоп виртуализация!!!? Какви са възможностите за безплатни решения!!!!? -: Feb 08, 2016, 15:56
Цитат
А опитай да се свържеш от Русе към сървър в София - няма значение за копане или за .бане (за връзка от с. Горно Нанадолнище въобще няма да коментирам) - какви 100МБ какви 1ГБ/сек

Уффф, което ми напомня навремето точно по същия казус се опитвах да му обясня що е то латентност и как като иска дизайнерите в Русе да му чертаят на CAD програмата му на домашния сървър без да ореват орталъка, трябва за начало да се бръкне прилично за MPLS и гарантиран канал, а той човекът ми обясняваше колко скапани били доставчиците в Русе и как нямало да се дава на тарикати да му дерат кожата.

Оттогава предпочитам да гледам сеир пред това да се опитвам да давам съвети.
Страници: 1 ... 3 4 [5] 6 7 ... 409