Декабрь 28, 2008 автора Yaroslav Pogrebnyak
Ура! Сегодня ровно один год со дня открытия этого блога. За это время было не так уж много статей, зато много посетителей, интересных людей, комментариев и спама :).
В последнее время не удавалось писать, так как был совcем занят работой, но думаю, в новом году займусь статьями снова.
Спасибо всем, желаю счастливого Нового Года, с наступающими праздниками!
Опубликовано в News | 1 комментарий »
Сентябрь 2, 2008 автора Yaroslav Pogrebnyak
Есть множество вещей в программировании, которые мы интуитивно понимаем и используем. Так, понятия, о которых пойдёт речь часто касаются нас во время программирования. Мы поговорим о типах и о их преобразованиях. Страшные слова в следующих абзацах пришли из теории категорий, однако мы — программисты, а не математики, поэтому будем рассматривать всё это в контексте реальных языков программирования. Продолжить чтение »
Опубликовано в Articles | Помечено .NET, CSharp, Java, Object-oriented programming, Programming | 1 комментарий »
Август 7, 2008 автора Yaroslav Pogrebnyak
Эту статью я написал года четыре назад. А сейчас внезапно нашёл её, и решил выложить в блог. Довольно забавно :) Предупреждаю, я не несу ответственности за то, что может произойти с вашей техникой в результате применения данной информации.
В последнее время довольно долгое время меня мучила мысль о том, что неплохо бы как-нибудь своими силами связать компьютер с внешним миром. Плюс ко всему впустую простаивающий параллельный порт принтера меня угнетал, ибо у меня принтер подключён через USB. Я просмотрел несколько статей, описаний и прочей литературы, и то что у меня вышло в результате экспериментов назвать оригинальным язык не поворачивается, но, тем не менее, это может показаться кому-то интересным.
Задача стоит весьма тривиальная: научиться управлять мерцанием светодиода, подключённого к ПК через LPT-порт. Почему именно LPT? Потому что он довольно прост и в меру интересен.
Поехали!
Продолжить чтение »
Опубликовано в Articles | Помечено cc, Hardware, Programming | Комментарии (4) »
Август 5, 2008 автора Yaroslav Pogrebnyak
Допустим, у нас имеется некоторое количество эталонных образов – изображений, либо ещё чего-нибудь. Нам дают некий искажённый образ, и наша задача состоит в том, чтобы «распознать» в нём один из эталонных. Каким образом человек это сделает – вопрос сложный. А вот каким образом с данной задачей справится искусственная нейронная сеть – мы вполне можем себе представить. Тем более, если это нейронная сеть Хопфилда.
Продолжить чтение »
Опубликовано в Articles | Помечено Neural network, Programming, Python | Комментарии (4) »
Июль 28, 2008 автора Yaroslav Pogrebnyak
Среди всех структур данных, имеющихся в распоряжении у замечательной науки информатики, есть одна, которой многие люди восхищаются больше, чем другими. Это – хеш-таблица (Hash Table), несомненное достижение в области компьютерных наук. Практически все современные языки программирования имеют реализации хеш-таблиц в своих библиотеках. Чаще всего мы работаем с ними в виде словарей (или ассоциативных массивов), представляющих собой контейнеры множества пар ключ-значение.
Так как же устроены хеш-таблицы, почему они удобны, эффективны, и зачем нам или пользоваться? Здесь я привожу краткое введение в хеш-таблицы для тех, кто не знает и по каким-то причинам не хочет или не может изучить классические труды (они приведены в конце статьи). Одна из причин, побудивших меня написать этот текст, так это то, как показал мой опыт, что тема хеш-таблиц достаточно часто встречается в вопросах на собеседованиях ;).
Продолжить чтение »
Опубликовано в Articles | Помечено Data structure, Programming | Комментарии (3) »
Июль 21, 2008 автора Yaroslav Pogrebnyak
Ruby – это замечательный язык программирования, приобретающий всю большую популярность в последнее время. Наверное, вы знакомы с Ruby, раз принялись читать эту статью. В противном случае вам сначала лучше познакомиться с информацией, представленной на официальном сайте www.ruby-lang.org, прежде чем приступать к чтению. Продолжить чтение »
Опубликовано в Articles | Помечено cc, Programming, Ruby | 1 комментарий »
Июль 7, 2008 автора Yaroslav Pogrebnyak
Если что-то ходит как утка, и крякает как утка, то будем относиться к этому как к утке. Так неформально описывается принцип утиной типизации (Duck Typing). Утиная типизация «развязывает нам руки», позволяя полиморфно работать с объектами, которые не связаны в иерархии наследования, но имеют необходимый набор методов. Здесь мы подходим к извечному спору о том, что лучше – динамическая или статическая типизация. Обойдём его стороной, сославшись на известную статью Мейера и Дрейтона под названием «The End of the Cold War Between Static and Dynamic Languages», и лучше посмотрим, как реализовать “утиное” поведение на Java.
Продолжить чтение »
Опубликовано в Articles | Помечено Java, Programming | 1 комментарий »
Май 15, 2008 автора Yaroslav Pogrebnyak
Компьютеры – в общей массе своей, штуки дискретные. Поэтому мы не можем сказать – дайте мне последовательность чисел Фибоначчи, и работать с ней, не указав необходимую её длину. Ну, на самом деле мы можем вычислять эту последовательность динамически, при каждой потребности в следующем элементе (пока у нас хватает памяти), создавая иллюзию бесконечности. В языках программирования такие вещи наиболее элегантно проделываются с помощью ленивых вычислений. Ленивые вычисления означают такие вычисления, которые производятся только тогда, когда в них действительно возникает необходимость, а до этого времени они откладываются, как могут.
Продолжить чтение »
Опубликовано в Articles | Помечено CSharp, Functional Programming, Programming | 1 комментарий »
Март 31, 2008 автора Yaroslav Pogrebnyak
a="a=%c%s%c;printf a,34,a,34";printf a,34,a,34
;)
Опубликовано в News | Помечено Programming, quine, Ruby | Комментарии (2) »
Февраль 13, 2008 автора Yaroslav Pogrebnyak
Недавно мне нужно было добавить комментарий с копирайтом в начало каждого файла одной С++-программы. Вручную открывать каждый файл и копировать туда тект было лень, и я написал скрипт, который это делает автоматически. На Python.
Cкачать его вы можете тут: http://y.ne.truisty.org/hcrepl.
Вот как он работает:
$ ./hcrepl.py . --from header.txt --verbose --recursive --style=M
Entering include
Processing include/BinaryReader.h
Processing include/BinaryWriter.h
Processing include/Code.h
Processing include/Huffman.h
Processing include/Tree.h
Processing include/TreeNode.h
. . .
. . .
В итоге, в начале каждого файла появится комментарий с текстом из файла header.txt. Если в начале файлов уже есть какие-то комментарии, они заменяются новым.
Скрипт распознаёт три стиля комментариев – /* */, // и ///.
Помощь по программе можено вывести, запустив скрипт с параметром -h.
Может быть, кому-то пригодится.
Опубликовано в News | Помечено cc, Python, Script | Leave a Comment »