nm_work: (Default)
Читаю исходные коды, написаные другими программистами, и понимаю, что в образовательных целях и для привития хорошего стиля в программировании надо просто заставлять людей какое-то время писать на функциональных языках.

Иначе они даже в OO модели пишут классический спагетти код - с сайд эффектами, с использованием переменных класса в качестве глобальных переменных и т.д.

классический пример (на php)

$data = $this->validate($data);
if (isset($this->validation_results)) { ... }

программист, писавший до этого на чистых функциональных языках написал бы

list($data, $validation_results) = $this->validate($data);
if ($validation_results) { ... }

Я лично считаю, что это идет
  • во-первых от того, что пишущий никогда не задается вопросом - а как я могу красиво вернуть сразу _несколько_ результатов из функции - это тяжелое наследие языка типа Pascal/C, где для этого пришлось бы создавать отдельную структуру
  •  

  • во-вторых, из-за недостатка кругозора в других языках программирования. Даже в том-же самом Python (который уже стал мейнстримом) упаковка/распаковка данных из tuple является очень синтаксически естественной операцией и читая чужой код, учащийся языку воспринял бы эту конструкцию и начал ее использовать. В php это не так принято - и поэтому на нее и не обращают внимание. Написание двух лишних слов array/list в php я не считаю препятствием - просто небольшое неудобство.

В этом плане мне очень нравится подход perl, который даже ссылку на экземпляр объекта передает в качестве аргументов функции - поэтому, когда начинаешь менять что-то в экземпляре объекта - сразу видишь, что в этот момент создаешь side effect :)

Резюме: учите другие языки программирования, хотя бы для расширения кругозора ;)
nm_work: (Default)
правительство US начало закрывать какие-то домейны в зоне .com .
просто по решению суда.

Читаем -

http://torrentfreak.com/u-s-government-seizes-bittorrent-search-engine-domain-and-more-101126/

http://news.techworld.com/sme/3251010/torrent-finder-shut-down-by-us-agencies/?olo=rss

или вот тут

http://www.opennet.ru/opennews/art.shtml?num=28815


Фактически это показывает необходимость иметь альтернативную сеть DNS, которая тоже являлась бы неубиваемой.

Для этого, в принципе достаточно иметь автоматические скачивалки named.root файла :) которые позволят быстро обмениваться информацией о новых top level DNS серверах.

Правда в этом случае возникает вопрос с доверием этим серверам - потому что они могут выдавать совершенно другую информацию и вообще контролироваться злоумышленниками :) Вот как-то так :) 
nm_work: (глазег)
С админского форума:
Flash_34: Мой админ ограничил права в доступе к нету. Можно это как-то исправить ил обойти! Мне срочно нужно скачать прогу с нета, но не могу......
ПОМОГИТЕ, ПЛИЗЗ......
www_tank: если хорошо закрыл - никак. здесь админы собираются - своих не выдаем!
Next: Хы.. Не мой. Чей хомяк?
InventoR: тоже не мой. но думаю его админу надо посоветовать прирезать этому чудаку еще инет.
чтоб не задавал таких глупых вопросов на форумах професиональных системных администраторов.
Deju: Flash_34
ты завтра подойди ко мне, я тебе популярно объясню!
InventoR: ну вот и админ наконец обьявился.
Ну теперь все будут жить долго и счасливо.
Правда без интернета.
nm_work: (Default)
Я переместил обсуждение сюда: http://nm-work.livejournal.com/264496.html


Read more... )
nm_work: (Default)
итак, товарищи программисты, кто-то вплотную с SSE/SSE2 работал?
а из gcc?

задача - заставить gcc генерировать с -O3 -msse2 тот ассемблерный код, который я хочу, но без написания собственно ассемблерного кода :) в части случаев все отлично получается, а вот в части я не понимаю, ка кего заставить генеировать то, что мне надо.
nm_work: (Default)
Арифметический кодировщик, вывернутый на изнанку - и вместо сжатия текста используется для _ВВОДА_ текста.


http://www.simplysymbian.com/2007/11/02/n95-accelerometer-video-dasher-text-input/

http://www.inference.phy.cam.ac.uk/dasher/

http://en.wikipedia.org/wiki/Arithmetic_coding
nm_work: (Default)
Эти слова редко когда употребляются, но если вы программируете достаточно долго, вы с ними со всеми сталкивались


  • Борбаг (Bohr bug) - устойчивая ошибка, не изчезающая при попытке ее обнаружения
  • Мандельбаг (Mandelbug) - ошибка возникающая хаотично, но в действительности заложенная в глубинах кода или даже архитектуры :)
  • Шрёдинбаг (Schroedinbug) - ошибка, которая возникает, когда вы натыкаетесь на нее в исходном коде программы и понимаете что программа в принципе не может работать :)
  • Гейзенбаг (Heisenbug) - ошибка, которая проявляется или не проявляется только когда вы на нее смотрите. или пытаетесь обнаружить
nm_work: (Default)
П р о г р а м м и с т: (назидательно) Знаешь, чем отличается жопа с руками от человека? Если человек производит какое-то действие, и оно не даёт нужного эффекта, он останавливается и думает, где же он навалял. А жопа с руками тупо повторяет те же самые действия до тех пор, пока её не остановит кто-то другой. (оживляется) И это можно измерить количественно: чем больше до момента остановки было совершено тупых повторов, тем ближе человек к состоянию абсолютной жопы.

Боже, храни Compaq!
nm_work: (Default)
Интересная математическая задача из тероии вероятностей: 

Оптимальная остановка случайных процессов :)


Теперь я расскажу саму задачу, ровно так, как её формулиро-
вал Гарднер. Это задача о разборчивой невесте. Пусть в некотором
царстве, в некотором государстве принцесса решила, что ей по-
ра найти себе жениха. Созвали царевичей и королевичей со всего
света, и явилось 1000 претендентов. Про любых двух когда-либо
увиденных принцесса может сказать, кто из них лучше. При этом
царевичи, как говорят математики, образуют упорядоченное мно-
жество, т. е. если Иван Царевич лучше Василия Царевича, а Ва-
силий Царевич лучше Фёдора Царевича, то Иван Царевич лучше
Фёдора Царевича. Претенденты входят к принцессе по очереди,
по одному, причём их порядок определён случайным образом, т. е.
вероятность появления какого-то царевича первым, или пятисо-
тым, или тысячным совершенно одинакова. Принцесса, разумеет-
ся, умея их сравнивать, может сказать, что, например, вошедший
тридцатым является десятым по качеству, т. е. девять из предыду-
щих были лучше, а остальные — хуже, и т. д. Цель принцессы —
получить самого хорошего жениха, т. е. даже второй её не устраи-
вает. На каждом шаге, т. е. после встречи с каждым из царевичей,
она решает, берёт ли она его в мужья. Если берёт, то на этом смотр
претендентов заканчивается, они все разъезжаются по домам.
Если же принцесса ему отказывает, то царевич, будучи отвергну-
тым, тут же уезжает домой, потому что все царевичи и королеви-
чи — люди гордые. Показ претендентов на замужество при этом
продолжается. Если в конце концов принцесса не получает лучшего,
то считается, что она проиграла, выходить замуж вообще не будет,
а уйдёт в монастырь (про монастырь я уже от себя придумал, у Гард-
нера этого не было). Спрашивается, как действовать принцессе,
чтобы с наибольшей вероятностью получить лучшего жениха.


Полность здесь:
http://www.mccme.ru/mmmf-lectures/books/books/book.25.pdf

nm_work: (Default)
Программисты это заценят. Трюк с double linked list оооочень хорош :)


They have to be good enough programmers to ship code, and we’ll forgive them if they never write a unit test, or if they xor the “next” and “prev” pointers of their linked list into a single DWORD to save 32 bits, because they’re pretty enough, and smart enough, to pull it off.

Вся статья здесь



nm_work: (freebsd)
иконки флагов высотой в 20 пикселей -- чтоб пихать на странички с разными версиями на разных языках :)

http://www.crwflags.com/fotw/flags/wflags20.html
nm_work: (Default)
есть в хостинге такая штучка -- VPS (Virtual Private Server), это когда вам отрезают от настоящего большого тортика сервера кусочек и продают :)

Чем это отличается от обыкновенного shared hosting-a? Тем что у вас полный админский доступ ко всему, что хотите делайте, хоть форматируйте каждый день ;)

Так вот. Есть одна беда с VPS -- обыкновенно маловато дискового пространства на них дают, пару-другую гигов всего. И когда это дисковое пространство кончается -- большая часть сервисов отказывается работать и просит кушать места на диске. :)

Посему -- на любой боевой unix системе нужно обязательно организовать следующие периодические задачи
  • ротация логов
  • сжатие логов
  • нотификация админа о наличии нового архива (mail/sms)
  • в случае критической нехватки места на диске -- зачистка старых архивированных логов
Во всяком случае это актуально для web серверов -- т.к. лучше потерять лог, чем не обслуживать клиентов.
nm_work: (Default)
френды :) у всех у кого стоит Mozilla и AdBlock -- я очень рекомендую вам сделать double clock на иконке adblock и посмотреть, чего загружается на страничке вместе с ЖЖ. Какого-то черта ща в нее понапихано до фига российских счетников(counteow) типа рамбперл и все такое и еще какой-то сервис который показыает snapshot той URL, которую вы видите в посте. все это кааааанкретна тормозит загрузку страничек из жж :)))

вот что забанил я

http://spots.snap.com/
http://tns-counter.ru/*sup_ru
scnt.rambler.ru
*.top.list.ru/counter?id=

жить стало веселей и странички начали грузиться быстрее.

это изменение в СУП-е внесли кажется последние неделю-2, не больше.
nm_work: (Default)
Не прерывайте сотрудников, погруженных в работу. Для тех, чья работа связана с погружением в творческий процесс (например, программистов или работников, пишущих тексты), нет ничего хуже, чем внезапное прерывание. Когда они работают, не отвлекайте их новыми срочными поручениями, дайте им возможность сосредоточиться.


О состоянии "потока"


PS. 2programmers -- речь идет именно о продуктивном состоянии, а не когда *** груши околачиваете ;).
nm_work: (Default)
It says a lot about what functional programming isn’t (it has no assignments....) but not much about what it is. The functional programmer sounds rather like a mediaeval monk, denying himself the pleasures of life in the hope it will make him virtuous. To those more interested in material benefits, these advantages are totally unconvincing.... It is a logical impossibility to make a language more powerful by omitting features, no matter how bad they may be. Clearly this characterisation of functional programming is inadequate. We must find something to put in its place - something that not only explains the power of functional programming but also gives a clear indication of what the functional programmer should strive towards.



ну и по-подробнее о функциональном языке Qi здесь
nm_work: (Default)
дорогие френды, хочу еще раз обратить ваше внимание на сайт

не надо ничего придумывать!

этот сайт уже САМ позволяет онлайн делать переводы идентификаторов и забивать к ним в репозитори. после чего возможно использование получаемых оттуда .po/.mo файлов в качестве файлов локализации

интерфейс -- достаточно удобный.
так что -- нужно просто зарегистрироваться и начинать переводить :)

вот пример странички с переводом - здесь
nm_work: (Default)
"your CURRENT wasn't recent enough" :P
nm_work: (Default)
Аndrew Tanenbaum's "Computer Networks" and goes like this (I just looked it up in my Second Edition copy from 1989, page 57): "The moral of the story is: Never underestimate the bandwith of a station wagon full of tapes hurtling down the highway."

и очень интересное обсуждение здесь -- http://www.codinghorror.com/blog/archives/000783.html
nm_work: (Default)
вот как делать асинхронные JSON-RPC запросы, имея под руками только prototype.

код под катом )

April 2013

S M T W T F S
 123456
7891011 1213
14151617181920
21222324252627
282930    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 21st, 2017 04:51 pm
Powered by Dreamwidth Studios