• Об управлении временем, саморазвитии и деньгах

      Я хочу рассказать о том, почему в отдельности не работают подходы, которые люди начинают применять, прочитав ту или иную книгу из области time-management или управления финансами.

      Вся суть заключается в том, что указанные книги зачастую предоставляют лишь готовый инструмент, который, однако, подходит далеко не каждому. А чтобы применить инструмент, сначала нужно обучиться основам дела, за которое вы собираете браться.

      Вот, например, езда на автомобиле. Сначала человек меняет свои привычки, установки, доводит до автоматизма простые действия. Затем сдает экзамен, и только потом выезжает на дорогу и начинает набирать настоящий опыт, в процессе которого и становится мастером.

      А когда мы говорим об управлении временем, часто случается следующее. Человек прочитал одну книгу, один день попробовал вести хронометраж — бросил, лениво. Написал план на неделю, месяц, год, и ни разу их не открыл. На следующий день писал план первые три дня, а потом забросил — ибо ничего не успевал.

      Или с деньгами.
      Читать дальше →
    • MySQL шпаргалки

        Часто, когда разрабатываешь сайт, замечаешь, как на одни и те же грабли наступают разработчики при проектировании базы данных.

        Сегодня я решил опубликовать свои шпаргалки, на самые часто встречающиеся ошибки при работе с MySQL.

        Читать дальше →
      • Когда не нужна тригонометрия

          Просматривая различный код по выводу на экран какой-нибудь даже примитивной графики, я заметил чрезмерную любовь некоторых программистов к тригонометрии. Часто код пестрит синусами, косинусами и арктангенсами там, где без них можно обойтись. Этим грешат даже хорошие программисты, которые способны спроектировать сложную систему, но почему-то не освоили вектора в объёме школьной программы. Буквально азов векторной алгебры хватает для решения многих насущных проблем. В этом топике я хочу провести краткий ликбез, напомнить основные действия с векторами на плоскости и в качестве примера решить две задачи без тригонометрии: поиск отражённого луча по падающему лучу и произвольно расположенному зеркалу, а также рисование наконечника стрелки. Если вы можете представить в голове рисование произвольно направленной стрелки без синусов и косинусов, смело пропускайте этот топик. Для остальных постараюсь объяснять попроще.
          Читать дальше →
        • Опубликован весь архив Computer Science клуб при ПОМИ РАН

            Добрый день!

            Как представитель проекта Лекториум рад сообщить — мы опубликовали весь архив Computer Science клуба.
            Кроме того, почти год назад мы организовали запись всех лекций на хорошие камеры и микрофоны.
            А в этом году планируем подключить вебинары.


            Большинство лекций читается на русском языке. Все записи снабжены презентациями и описаниями.

            UPD. Кратко. Старые лекции в плохом качестве, а новые с 2010 года с хорошим звуком и в 720p.
            UPD 2 Расширили канал, видео грузится теперь без проблем.

            Под катом перечень курсов и несколько вопросов касательно вебинаров.
            Читать дальше →
          • Canvas-трансформации доступным языком

              Доброго времени суток, хабравчане! В этой статье я подробно расскажу вам о трансформации и вращении в javascripte. Матрица трансформаций, на первый взгляд, штука непонятная и многие ею пользуются даже не осознавая, что она делает на самом деле, используя готовые значения из интернета. На MDC об этом рассказано скудненько, а информацию в английской Википедии тяжело назвать общедоступной. Постараемся разобраться в этом вместе.
              Читать дальше →
            • Hexlet.ru: «коллективный computer science student»

                Здравствуйте!

                Помните мой проектик об учебе в университете Carleton по программе Computer Science? Ему скоро будет 2 года!

                Этим летом я предложил другим неравнодушным к информатике, математике и прочим наукам людям (студентам, специалистам или учителям/профессорам) присоединиться ко мне и создать коллективный блог. Сегодня мы рады открыть двери на новый сайт, который решено было назвать Hexlet. Hexlet это математическая фигура, которая отлично символизирует структуру содержания нашего сообщества: соприкасающиеся сферы внутри большой сферы как соседние области наук.

                Мы приглашаем вас принять участие в жизни сообщества. Вы можете публиковать любые полезные материалы: от конспектов лекций до собственных исследований. Студенты и люди, работающие в индустрии, могут делиться опытом и знаниями; учителя или профессоры могут использовать сайт как площадку для публикации материалов по своему курсу: тогда их студенты смогут не только получить необходимую информацию, но и обсудить ее с другими людьми из разных частей планеты.
                Читать дальше →
              • Asterisk, или домашняя телефония для (про)двинутых пользователей

                  Эта история началась два долгих года назад, когда во время командировки в США я ВДРУГ остался без мобильной связи: с дуру перед поездкой поменял телефон, а он оказался «двух-диапазонником»… Да и роуминг не дешёвый…
                  Итогом стало открытие для себя SIP-телефонии.

                  И вот несколько месяцев назад, из статей на Хабре, выясняю, что чужим дядям можно и не платить за межгород, если надо позвонить откуда-то в родной город через Интернет! Достаточно поставить VoIP сервер и настроить его так, как надо именно тебе!

                  И вот, взяв в руки Asterisk, я приступил к операции по борьбе с излишней жадностью ОпСоСов…

                  Читать дальше →
                • Самый главный алгоритм

                    От всей души рекомендую видео лекцию А. Степанова (человека создавшего STL): «о истории алгоритма нахождения наибольшего общего делителя», это популярная лекция оказалась бесконечно интересной, в ней рассказывается, на примере этого алгоритма о развитие алгоритмического знания всего человечества с эпистемологической точки зрения в разрезе истории с античных времен с Пифагора до наших дней до Кнута.

                    image
                    Посмотреть можно здесь:
                    часть1
                    video.yandex.ru/users/ya-events/view/129
                    часть2
                    video.yandex.ru/users/ya-events/view/128
                    Читать дальше →
                  • Декодирование JPEG для чайников

                    • Tutorial

                    [FF D8]


                    Вам когда-нибудь хотелось узнать как устроен jpg-файл? Сейчас разберемся! Прогревайте ваш любимый компилятор и hex-редактор, будем декодировать это:


                    Jpeg file in hex editor


                    Специально взял рисунок поменьше. Это знакомый, но сильно пережатый favicon Гугла: Google favicon


                    Последующее описание упрощено, и приведенная информация не полная, но зато потом будет легко понять спецификацию.


                    Даже не зная, как происходит кодирование, мы уже можем кое-что извлечь из файла.


                    [FF D8] — маркер начала. Он всегда находится в начале всех jpg-файлов.


                    Следом идут байты [FF FE]. Это маркер, означающий начало секции с комментарием. Следующие 2 байта [00 04] — длина секции (включая эти 2 байта). Значит в следующих двух [3A 29] — сам комментарий. Это коды символов ":" и ")", т.е. обычного смайлика. Вы можете увидеть его в первой строке правой части hex-редактора.

                    Читать дальше →
                  • Другая книга про XSLT

                      Вашему вниманию предлагается небольшая по объему книга (можно называть это брошюрой), посвященная XSLT и его использованию в качестве языка шаблонизатора при создании сайтов на UMI.CMS.

                      Это не реклама «еще одной cms», и «еще одного шаблонизатора», а лишь предложение познакомиться с одним из подходов к использованию технологии XSLT при создании сайтов, где в качестве системы управлением контента взята UMI.CMS.
                      Читать дальше →
                    • Несколько других советов для PHP-разработчиков

                        Навеяно вот этим.

                        Я решил вспомнить некоторые особенности PHP, связанные с производительностью.

                        Отмечу, что включил в свой небольшой список лишь то, что обычно вызывает удивление у junior developers, с которыми мне приходилось работать.
                        О банальных вещах, вроде «одинарные кавычки вместо двойных», думаю, знают все, поэтому постараюсь кого-нибудь удивить.

                        Результаты и выводы, сделаны на основании нескольких версий PHP, который крутятся на знакомых мне серверах, а именно 5.2.6 из Debian Lenny, 5.3.2 из Ubuntu, и 5.2.14 из dotdeb. Возможно, на других платформах, есть отличия.
                        Читать дальше →
                      • Добавление и удаление на ходу SATA/SCSI устройств

                          Современный Linux (2.6+) может обнаруживать новоподключенные устройства (на шинах, которые поддерживают hotplug). Их можно, так же отключать, предварительно отмонтировав файловые системы и сделав sync. Среди hotplug шин не только USB, но и SATA, SCSI и SAS (в теории, это же применимо и к PATA, но там много глупых контроллеров, которые не умеют адекватно реагировать на исчезновение устройства).

                          Отключать их лучше не дёргая на ходу физическое устройство, а сказав ядру полностью забыть про про него (гарантируя тем самым, что никаких операций ввода-вывода с устройством производиться не будет, даже если вспохватившийся кеш). Кроме того, иногда нужно выполнять эмуляцию процедуры plug-unplug без физического дёргания питания/шины данных (что не очень хорошо для железа). Самая типичная ситуация — это отладка скриптов udev.

                          Удаление устройства


                          echo 1 >/sys/block/sdX/device/delete
                          

                          (x — буква устройства, sda, sdb, etc).

                          Эта команда удаляет указанное устройство. Заметим, это низкоуровневая команда, которая не проверяет кеш и статус примонтированности, так что лучше сначала сказать umount & sync.

                          К сожалению, я не знаю метода совместить выключение шпинделя диска с его удалением с точки зрения ядра. Шпиндель можно отключить командой scsi-spin, однако, при попытке удалить устройство, оно будет раскручено заново и удалено. А у удалённого устройства уже нельзя ничего останавливать (нет устройства). Так что эта часть проблемы пока не решена.

                          Добавление устройства


                          Мы не можем «добавить» устройство, мы можем отдать контроллеру команду «перечитать» список устройств, подключенных к тому или иному порту. Если там найдётся что-то интересное, ядру дадут знать.

                          echo "- - -" >/sys/class/scsi_host/hostX/scan
                          

                          X — номер шины, совпадает с номером SATA порта на материнской плате. Если не знаете, можете смело делать для всех хостов по очереди, ничего, кроме небольшого лага в дисковых операциях, незаметного для софта и файловой системы, это не даст.

                          Обратите внимание, host'ы нумеруются с 0, а не с 1. (а в dmesg ata устройства нумеруются с 1).

                          Так же осуществляется и сканирование USB-SATA переходников (usb-боксов и внешних винчестеров — они просто фигурируют как ещё один scsi_host).

                          Если мы говорим про SCSI, то вместо "- — -" можно указать точный номер устройства/шины/LUN'а сканируемого устройства (например, «200 1 2»). SATA, в силу архитектурных особенностей (один target для одного initiator) принимает туда только «0 0 0».

                          Ещё об удалении… Если вы не знаете буквы устройства, но знаете его физическое место подключения, то удалять можно «прямым текстом», записью «1» в "/sys/bus/scsi/devices/targetX:0:0/X:0:0:0/delete".
                        • Потоковое видео средствами ffserver & ffmpeg

                            Для организации трансляции нам потребуется:


                            • Linux
                            • FFmpeg (включает в себя ffserver)

                            Теория


                            FFmpeg — это набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровое аудио и видео в различных форматах. Он включает libavcodec, библиотеку кодирования и декодирования аудио и видео и libavformat, библиотеку мультиплексирования и демультиплексирования в медиаконтейнер. Название происходит от названия экспертной группы MPEG и «FF», означающего «fast forward».

                            © Wikipedia

                            ffserver идёт в комплекте с ffmpeg и выполняет роль медиа-сервера — получает видеопоток от ffmpeg, который может быть запущен на другой машине, и раздаёт его счастливым пользователям.
                            Каждый получаемый поток называется Feed’ом (далее будет просто фид). Таких потоков может быть несколько, так же как и отдаваемых (выходных).
                            FFmpeg у нас будет захватывать видео с веб-камеры или читать из файла.
                            Читать дальше →
                          • Видеоуроки от Райана Бейтса на русском языке

                              image
                              Привет, Хабр!

                              Хочу рассказать тебе о проекте, над которым наша команда трудится не покладая рук — Railscasts.ru. Мы делаем переводы видеоуроков по Ruby on Rails, чтобы сделать жизнь разработчиков проще, не говоря уже о том, что изучение определенных техник проходит гораздо быстрее и нагляднее, а замечательная Даша дарит тебе частицу прекрасного ;-)

                              Уже можно посмотреть видеоуроки на следующие темы:
                              Читать дальше →
                            • Правило чтения по спирали

                              • Перевод
                              Техника, известная как «Чтение по спирали/по часовой стрелке» (“Clockwise/Spiral Rule”) позволяет любому программисту разобрать любое объявление языка Си.

                              Следуйте этим простым шагам:
                              Читать дальше →
                            • Горячие клавиши в шелле

                                Посвящается B_dot, пост которого заставил заинтересоваться возможностями консоли плотнее.
                                cat /dev/cheat-sheet >> /dev/head

                                Краткое вступление


                                В этом посте будет рассказано о некоторых сочетания клавиш, которые могут упросить жизнь администраторам, работающим в консоли. Все они работают в bash'e. Сочетания клавиш я дополнительно проверял на циске (Cisco IOS Software, s72033_rp Software (s72033_rp-ADVIPSERVICESK9_WAN-M), Version 12.2(33)SXH4), csh и zsh. Рассмотренное в других записях повторять особо не буду. Сочетания сгруппированы по использованной функциональной клавише.
                                Особенно полезен этот текст будет людям, которые любят использовать клавиши Home, End и Delete (которые в цисковой консоли «не работают»).
                                Читать дальше →
                              • PushButton Engine Lesson #2: добавление простой фигуры

                                  Вступительное слово



                                  image

                                  Сегодня мы продолжим изучать PushButton Engine (PBE) и узнаем, как в PBE создавать свои объекты и компоненты. Статья является переводом 2-го официального урока по PushButton Engine, в которой рассказывается про работу с компонентами PBE и создание простых фигур.
                                  Читать дальше →
                                • RSA, а так ли все просто?

                                    Прелюдия


                                    Доброго времени суток, уважаемые читатели.
                                    Скорее всего, большинству из вас известно, что из себя представляет асимметричный алгоритм шифрования RSA. В самом деле, этому вопросу по всему рунету и на этом ресурсе в частности посвящено столько статей, что сказать о нем что то новое практически невозможно.
                                    Ну что там, ей богу, можно еще придумать и так все давным-давно понятно. Рецепт приготовления прост:
                                    Два простых числа P и Q.
                                    Перемножить до получения числа N.
                                    Выбрать произвольное E.
                                    Найти D=E-1(mod(P-1)(Q-1)).
                                    Для шифрования сообщение M возводим в степень E по модулю N. Для дешифрования криптотекст C в степень D по все тому же модулю N. Все криптопримитив готов. Берем и пользуемся, так? На самом деле, не так. Дело все в том, что это и в самом деле не более чем криптопримитив и в реальном мире все самую чуточку сложнее.
                                    Читать дальше →