• Как поймать «поток», и как сделать так, чтобы он не сорвался

      Вступление


      Я, как руководитель проектов, всё больше и больше замечаю, что эффективность работы команды (и каждого программиста в частности) – это ключевой фактор, определяющий успех проекта. При эффективной работе даже самые тяжёлые проекты со сжатыми сроками удаётся завершить успешно, а неэффективная способна «завалить» простейшие проекты с минимумом рисков. Поэтому, я хотел бы поделиться своими мыслями об одном из ключевых понятий – понятии «работы потоком».

      Читать дальше →
    • Сборка плагинов для Qt Creator в windows

        Столкнулся с проблемой: как под виндой собрать плагин для Qt Creator'а, поставляемого с Qt SDK или Nokia Qt SDK.

        Для начала нужны исходники криейтора, их легко находим на гиториусе или ftp. Забираем оттуда версию 2.0.0 (сейчас такая в обоих SDK), распаковываем, кладём наш плагин в src\plugins. Можно собирать (как только соберётся сам криейтор).

        Теперь фишка. Чтобы плагин работал с криейтором из SDK его обязательно надо собирать в релизе и компилятором MSVS2008 с Qt 4.7 (beta2 или RC). Соответственно, скачанные исходники криейтора надо собирать так же.

        Собственно, всё, теперь можно копировать длл-ку плагина и .pluginspec файл в %QT_SDK_INSTALL_DIR%\QtCreator\lib\qtcreator\plugins\.

        В принципе, плагины от Qt Creator 2.0.0 скорее всего заработают и с версией 2.0.1 (последняя на данный момент), только в файле .pluginspec надо везде 2.0.0 заменить на 2.0.1.

        Хабратопик, побудивший меня исследовать этот вопрос
      • 6 способов убить Ваши сервера — познаем масштабируемость трудным путем

        • Translation
        Узнать, как отмасштабировать Ваше приложение, не имея при этом никакого опыта, — это очень нелегко. Сейчас есть много сайтов, посвященных этим вопросам, но, к сожалению, не существует решения, которое подходит для всех случаев. Вам по-прежнему необходимо самому находить решения, которые подойдут под Ваши требования. Так же, как и мне.

        Несколько лет назад ко мне пришел мой босс и сказал: «У нас есть новый проект для тебя. Это перенос сайта, который уже имеет 1 миллион посетителей в месяц. Тебенеобходимо его перенести и убедиться, что посещаемость может вырасти в будущем без всяких проблем.» Я уже был опытным программистом, но не имел никакого опыта в области масштабируемости. И мне пришлось познавать масштабируемость трудным путем.
        Читать дальше →
      • Язык Go с точки зрения PHP-разработчика

          Go — это язык, придуманный Робертом Гризмером (Robert Griesemer), Робом Пайком и Кеном Томпсоном, который был анонсирован в ноябре 2009 с версиями под Linux и Mac OS X. Сейчас разработчики работают в Google, но и задолго до этого были очень известными и уважаемыми людьми (к примеру, кодировка UTF-8 была изобретена Томпсоном и Пайком для использования в качестве основной кодировки в Plan 9).

          Лично я решил посмотреть, что это за язык после того, как тут опубликовали вот это видео выступления Роба Пайка. Я изучаю Go не очень долго, но даже за те две недели, что я потратил на его изучение, я успел сделать несколько проектов на нём, например backend для библиотеки JsHttpRequest (JsHttpRequest; мой backend на Go). Я до сих пор использую JsHttpRequest из-за её удобства (как со стороны JS, так и со стороны PHP). В статье я хочу рассказать исключительно о моих ощущениях после программирования на PHP и JavaScript, практически без примеров кода.
          Читать дальше →
        • Как сделать облачный (кластерный) хостинг за пару копеек*

            Три года назад у меня была интересная задача. Необходимо было собрать платформу, объединявшую несколько стоек с серверами в единое целое, для динамического распределения ресурсов между сайтами написанным для LAMP платформы. Причем так, чтоб вмешательство в код сайтов было минимальным, а еще лучше — вообще отсутствовало.
            При этом никаких дорогих решений вроде Cisco Content Switch или дисковой полки с оптоволокном использовать нельзя — не хватало бюджета.
            А кроме того, разумеется, в случае выхода одного из серверов из строя — это не должно было влиять на работу платформы.
            Читать дальше →
          • Концептуальная уязвимость в механизме загрузки DLL (MSA2269637)

              На прошлой неделе на Хабре уже писали о заявлении HD Moore и найденной им уязвимости, которая содержится в достаточно большом количестве приложений и работает на всех версиях MS Windows. Но все оказалось куда серьезнее, так как речь идет не просто о найденной уязвимости, а о концептуальной ошибке в дизайне механизма загрузки динамических библиотек. По этому поводу вчера Microsoft официально выпустила Security Advisory (2269637), что означает официальное признание серьезности данной уязвимости. Но давайте попробуем разобраться в сути этой проблемы, так как она ничуть не менее серьезная, нежели недавно найденная уязвимость в загрузке LNK-файлов.

              Уязвимость заключается в том, что многие программы при вызове функции LoadLibrary() не проверяют корректность пути, по которому эта библиотека может быть загружена. Таким образом, они позволяют произвести подмену выполняемой библиотеки. Это связано с тем, что поиск загружаемой библиотеки осуществляется в первую очередь в директории, содержащей образ исполняемого файла, который породил процесс (подмененная библиотека выполняется с привилегиями пользователя, запустившего процесс). К примеру, Georgi Guninski предложил следующую демонстрацию (PoC) данной уязвимости:
              Читать дальше →
            • Чувствуете ли вы опасность специализации?

                imageПредставьте себе сапожника, который занимается ремонтом башмаков, он подшивает рваную кожу, прибивает каблуки. С каждым годом у него получается все лучше и лучше, он способен отремонтировать разбитый нос башмака практически с закрытыми глазами. Клиенты чрезвычайно довольны, он получает удовольствие от работы — но такая идилия по законам жанра не может продолжаться бесконечно.
                Резкая смена моды — и вот уже башмаки почти никто не носит, все выбирают стильные кроссовки и туфли. Наш сапожник пытается сводить концы с концами, обслуживая бедных крестьян, неспособных купить новую модную обувь. Проходит еще немного времени — и к нему в каморку захаживают лишь любители ретро.
                К чему все это я? Дело в том, что в последнее время, наблюдая за ситуацией на IT-рынке, я часто замечаю похожую ситуацию. Очень много специалистов выбирают определенную платформу, язык программирования, совершенствуются в нем до превосходства. Но нестабильная, динамичная ситуация, особенно в нашей сфере, крайне часто меняет правила игры. Еще пять лет назад почти никто не слышал про язык Objective-C, и уж точно никто не мог представить сегодняшние размеры рынка мобильных приложений. А сейчас, к сожалению, многие сталкиваются с ситуацией сапожника, пытаясь запрыгнуть на подножку отъезжающего поезда.
                Читать дальше →
              • Ликвидация ООО своими силами

                  Предыстория


                  Давным-давно мы придумали одну очень интересную услугу, которой не было в то время в нашем городе. Далее должно было быть описание процесса создания, работы, финансового кризиса вообще и в выбранной отрасли в частности. В общем, по определенным объективным причинам, было принято решение о ликвидации открытого под проект ООО.

                  Читать дальше →
                • jQuery плагин для добавления ссылок в буфер обмена

                    У многих из нас есть блоги, интернет-магазины, новостные сайты etc… Понятное дело стараемся опубликовывать оригинальный контент, но что же происходит после появления контента в интернетах, его конечно же просматривают и если он интересный, пользователи иногда обмениваются ссылкой на страничку с контентом. Новые переходы на нужную страницу и нам очень хорошо, а что если наш отличный текст просто взяли скопировали и скинули в аську\скайпик\почту — наш текст ушел, а перехода нету :(.

                    addtocopy plugin

                    Запретить копирование, это очень неправильно, весело и смешно ©, но мы ведь можем при копировании добавить в буфер обмена ссылку на наш сайтик. Рассмотрим как же нам это лучше сделать:

                    Читать дальше →
                  • Your Personal DNS — еще немного о DNS хостинге

                      Как уже не раз говорилось, в вопросе хостинга DNS есть ненулевое количество нюансов.
                      Часть из них, под девизом «мой провайдер предоставляет DNS сервера», описаны например вот тут:
                      http://habrahabr.ru/blogs/hosting/94496/
                      http://habrahabr.ru/blogs/hosting/90533/

                      Помимо оного существует еще ненулевое количество других вопросов. Начиная от фразы «Какие еще TXT записи? Какой еще sip?» и заканчивая «А сегмент сети, в котором наши DNS сервера из вашей %%%%%% не доступен. Нам очень жаль»

                      Мы думали, думали и решили, что наш лунный модуль будет, ну, как минимум, не хуже существующих.
                      А тут еще и EveryDNS продали.
                      Вообщем, если вкратце — то еще одним публичным и бесплатным DNS менеджером прибыло.

                      Читать дальше →
                    • Главный недостаток российской системы образования — непонимание назначения

                        Данный пост родился когда я понял, что комментарий к заметке newuser "Главные недостатки российской системы образования" оказался слишком большим.

                        Я закончил технический лицей 4 года назад в далёкой от МКАД провинции. Обучение в лицее проходит с 7-го по 11 класс. Нагрузка там была существенно больше чем в обычной школе. На нас наезжали всякие проверки за якобы чрезмерную нагрузку, но я считаю это бредом ибо туда пришли только те кто хотел учиться. Поступают туда по экзаменам, так что ещё не всякий пройдёт. Я очень доволен этим образованием, и на вопрос, «почему?» я отвечаю этим постом.
                        Дальнейшие рассуждения под катом
                      • Пишем свой плагин для jQuery

                          Сегодня утром я зашёл на Google Maps и с радостью увидел там слой «Пробки». Сразу же глаз зацепился за интересное интерфейсное решение для выбора времени, на которое будет показана ситуация с пробками.

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

                          Самое время вспомнить, как пишутся плагины под jQuery.
                          image
                          Читать дальше →
                        • Генерирование изображений-заглушек

                            Сегодня мне кинули ссылку на прикольный сервис для быстрого генерирования изображений-заглушек. Может пригодиться для html-верстки. На мой взгляд, это удобно тем, кто и так использует заглушки — экономит время при вёрстке, т.к. сами заглушки уже готовы. Можно цвета/размеры подбирать, меняя только числа/буквы в коде, не отвлекаясь на сам файл картинки — и сразу видеть эффект. И сами размеры видеть написанными, если нужно, чтоб к коду не возвращаться для проверки. Или вместо размеров можно текст добавить, чтоб всегда знать, для чего эта заглушка (типа «Бан(н)ер» или там «Лого», или «Фотография»).

                            На сервисе не нужна регистрация — и вообще на сайт можно не заходить, чтобы его использовать. Пишете сразу у себя в коде, например:
                            <img src="http://placehold.it/350x50" />
                            и получаете:


                            Update. Благодаря усилиям k0rv1n, найден вариант этого сервиса, только лучше :)
                            Во-первых, там поддерживается кириллица. Во-вторых, там даны ссылки на исходники для разных языков.
                            Автор dummyimage.com — тот же Russell Heimlich, что и у placehold.it. У placehold.it есть ещё один автор, но будем считать, что он делал дизайн (дизайн там правда круче, но видимо как раз из-за понтового шрифта Unicode и не выходил).

                            Примеры (см. под хабракатом) я поменял с placehold.it на dummyimage.com, раз уж он функциональнее…
                            Ещё насколько примеров под катом
                          • Связываем домен и динамический IP

                              Что мы имеем:
                              1. компьютер с осью и установленными mysql, apache, php (тут ничего писать не буду, благо мануалов хватает)
                              2. интернет с присваиваемым динамическим IP, роутер.

                              Что мы хотим:
                              1. Что бы люди вбивая в адресную строку браузера доменное имя второго уровня (купленное нами или полученное на каком либо сервисе), попадали на наш сайт (в независимости от того на каком IP он сейчас находиться).
                              2. Хотим это бесплатно.

                              Итак, то как это было реализовано мной в виде краткой инструкции можно прочитать под катом, быть может кому-нибудь это пригодиться или просто-напросто будет интересно. Так же, буду рад объективной критике. Спасибо за внимание, и кому интересно добро пожаловать под хабракат.

                              Читать дальше →
                            • Первая стабильная версия OCR-системы Cuneiform Linux

                                Юсси Пакканен сообщил о выходе версии 1.0 системы оптического распознавания текстов Cuneiform Linux. В новой версии удалён некоторый код сомнительного лицензионного происхождения и исправлено множество ошибок.

                                Код Cuneiform Linux распространяется под упрощённой лицензией BSD и основан на коде системы CuneiForm, который был открыт компанией Cognitive Technologies в 2008 году.

                                Скачать можно здесь: launchpad.net/cuneiform-linux/+download (инструкции по установке и использованию можно прочитать в топике «Распознаем текст с помощью cuneiform»).
                              • 20 терабайт своими руками

                                  Не столь давно в ЖЖ одна компания киношная спросила, как-бы так хитро им сделать 20 терабайт сетевого хранилища, а то ролики не влезают…

                                  На что им народ насоветовал какие-то супер-пупер профессиональные решения на сотни тысяч рублей, что, конечно, круто, но…

                                  Я-же со своей стороны — дал раскладку по тому сервачку, который сделал для себя сам года три назад и успешно его юзаю…

                                  Сервер содержит 11 жёстких дисков, из которых один — загрузочный и 10 — файлопомойка.
                                  Как не сложно посчитать, 10 дисков по 2 терабайта — дадут искомые 20 терабайт!
                                  Как этого достичь?
                                  Сейчас расскажу!

                                  ПыСы Это перенос моей статьи из Песочницы. С момента её написания выяснил пару «весёлых» вещей, которые тут и были добавлены.

                                  ПыПыСы Это именно самодеятельное решение по запихиванию такой оравы дисков в один комп.
                                  Надёжность реализуется исходя из того, что при ТАКОМ числе дисков — можно часть поставить в RAID, а при необходимости — легко и непринуждённо заменить вылетевший!

                                  Читать дальше →
                                • Быстрая отправка в twitter сокращенного адреса просматриваемой страницы

                                    image
                                    После появления простых букмарклетов для получения сокращенной ссылки текущей страницы (для goo.gl, и для bit.ly) я понял что логичным продолжением должен быть букмарклет для отправки этой сокращенной ссылки в twitter. В результате родился, как по мне, очень удобный инструмент.

                                    Читать дальше →
                                  • 2000 часов в одиночестве, или как был сделан RSS reader / Я робокоп

                                      I. Am. Robocop.Всем привет,

                                      Собираюсь поделиться с вами технической стороной того, как я за 16 недель сделал новый вебовый rss ридер, и чуть не сошел с ума.
                                      Отходя от долгой предыстории, будем считать, что все началось в феврале этого года, когда мы с Дэвидом (dmiloshev, UI-дизайнер) решили сделать прототип нашего детища вдвоем.
                                      «В одиночестве» — потому, что не было никаких скрамов, совещаний, «коллективного разума», а всю техническую часть, довелось делать самому.

                                      Если бы меня попросили описать всю статью в одном предложении, то получилось бы:
                                      No-SQL, mongodb, node.js, фак мой мозг, Evented I/O, очереди, выводы, git, nginx, memcached, Google Reader, Atom, TTL, PHP, ZF, jQuery, выводы.
                                      Читать дальше →
                                    • Распознаем текст с помощью cuneiform

                                        Поступила задача наладить автоматическое распознание текста с фотографий, т.е. пользователь при загрузке фотогографии на сервер, получает еще и распознанный с нее текст. Сказано — сделано. Было найдено хорошее бесплатное консольное решение — cuneiform.
                                        Читать дальше →
                                      • Список полезных инструментов для php разработчика

                                        • Translation
                                        PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
                                        Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
                                        Читать дальше →