• Переделываем приложение CD Collection

      Итак, в предыдущем топике (виден только подписчикам блога!) я ссылался на статью о Kohana, размещенную на сайте NetTuts+. Поскольку в описанном в ней приложении есть недостатки, предлагаю их найти и обезвредить.
      Интересно?
    • JSNAV

        Навигация по странице


        Всё чаще и чаще в web появляются сайты, использующие навигацию, написанную на JavaScript. Типичный случай использования javascript для навигации: страница с меню и блоком контента, куда через AJAX подгружается содержимое:



        Пользователь кликает по пункту, JavaScript грузит из сети содержимое, вставляет в блок контента, пользователь доволен: страница без перезагрузки показывает требуемое и траффика потребовалось меньше за счёт того, что не потребовалось грузить все эти HEAD, BODY, STYLE и прочие элементы.

        Но вот проблема: URL страницы. Если на old scool сайтах на каждый пункт меню показывается новая HTML страница, и у пользователя есть вменяемый URI, который он может скопировать из адресной строки бразуера, послать другу или положить в закладки, то в случае AJAX интерфейсов в URI странице зачастую нет никаких ссылок на текущий контент документа.

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

        Не с секрет, что для решения этой проблемы многие программисты кодируют ссылку на текущее просматриваемое содержимое в якорь (anchor) URI документа. К примеру, на сайте jqapi.com (скриншот которого приведён вначале топика) при выборе того или иного пункта меню якорь страницы меняется на #p={contentId}.
        Читать дальше →
      • Так ли сложна смена языка для программиста?

          Небольшой топик-рассуждение на тему перехода на другой язык программирования, и развития знаний. Важно ли изучение дополнительных языков для программиста? Что важнее — язык или архитектура?
          Читать дальше →
        • jQuery.keyboard v0.1.0


            У меня есть на примете как минимум два проекта, в которых понадобится активное управление с помощью клавиатуры. Поэтому, я сел и написал удобный и красивый плагин для jQuery, который выкладываю во всеобщий доступ под свободной лицензией LGPL.
            Читать дальше →
          • Создание расширения для Google Chrome

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

              Для работы с расширениями вам понадобится переключить канал обновлений на Dev или Beta.
              Читать дальше →
            • Инструментарий веб-разработчика под мобильные устройства

                С каждым днем количество веб-сайтов и сервисов под мобильные платформы становится все больше и больше. Я уже как то писал про эмуляторы, а сейчас хочу представить несколько полезных инструментов, начиная от самых простых, показывающих как будет сайт выглядеть на том или ином устройстве, заканчивая различными оптимизаторами контента.
                Читать дальше →
              • Подключаем Wikipedia к сайту

                  Сейчас практически на каждом сайте есть кнопки для перехода на сайт твитера или добавление странички в закладки. Но почему-то очень мало можно увидеть иконок Wikipedia возле фамилий великих людей или терминов.

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



                  Если учитывать, что только активные пользователи нажмут на кнопку «Оставить свой отзыв» и проголосуют, то наверно 33 голоса можно умножить на 10 – 100.

                  Разобравшись с api Wikipedia хочется предложить решение как можно немного автоматизировать добавление линков на википедию.
                  Читать дальше →
                • База изображений в любых форматах и разрешениях

                    заказчик: Пусть аватарки пользователей у нас будут в 50×50 и 100×100, в JPEG
                    разработчик: Готово

                    заказчик: Надо переделать, чтобы аватарки были в PNG
                    разработчик: Сделал

                    заказчик: Пусть аватарки будут в GIF, 25×25 и 40×40
                    разработчик: Ага, проверяй
                    заказчик: Уже? Как ты это так быстро делаешь???
                    разработчик: …
                    Читать дальше
                  • Generating PDF files with PHP and FPDF

                    • Перевод
                    Большинство web-сервисов экспортируют данные в разных форматах для дальнейшего использования. Данная статья о том, как экспортировать данные в pdf-формате.
                    Хотя многие знают как это делать, я опишу кратко для тех кто не знает.
                    Читать дальше →
                  • Системы управления проектами. Ищем альтернативы Basecamp

                      imageНа написание поста меня сподвигла найденная на просторах хабра ссылочка на сайт с альтернативами Basecamp. Уверен многие уже заходили и смотрели предлагаемые альтернативы. Я же решил просмотреть их все. По результатам просмотра было выбрано 4 (+ 1 бонусная) системы управления проектами, которые можно назвать реальными альтернативами Basecamp. Из них три являются чуть менее, чем полностью неизвестными на просторах хабра (поиск дает практически нулевой результат), что дает мне надежду на то, что данный топик сообщит вам что-то новое. Критерии выбора и краткий обзор систем под катом (осторожно скриншотный трафик ~0.5 Mb).

                      Читать дальше →
                    • Пишем себе немного OpenID-авторизации

                        image

                        Взгляд в будущее


                            В последнее время всякие социальные сети и вообще сервисы-лидеры интернета по посещаемости и количеству аккаунтов завели очень неплохую, на мой взгляд, привычку — предоставление уникальных OpenID-идентификаторов для пользователей, дабы с их использованием можно было зайти на сторонний сайт. Кроме того, параллельно развивается очень похожая, но все-таки не совсем производная технология OAuth, которая появилась на свет благодаря стараниям создателей небезызвестного Twitter и, цитируя википедию, «позволяет предоставить третьей стороне доступ к защищенным ресурсам пользователя, без необходимости передавать ей (третьей стороне) логин и пароль».
                            Лично меня такая тенденция очень радует и, более того, я почти уверен, что за подобной технологией будущее. В частности, в будущем обязательно появятся новые мэшапы для агрегирования информации с кучи сайтов (в частности, хочется вспомнить очень хороший, но несправедливо забытый сервис Yahoo Pipes, который так и не смог покорить сердца и умы просто потому, что его время тогда еще не пришло. Возможно, все еще впереди), а именно такой «форм-фактор» требует логина на кучу сервисов сразу.
                        Читать дальше →
                      • Распараллеливание рекурсивных функций, используя OpenMP 3.0 task

                          image
                          Недавно я наткнулся на блог “OpenMP 3.0 tasking model: as smooth as Cilk?”. После чего я решил проверить, как хорошо распараллеливаются рекурсивные функции с OpenMP 3.0 task. Напомню, что до третьего стандарта не было поддержки динамического или иррегулярного параллелизма(к примеру, циклы с while или рекурсивные функции).
                          Читать дальше →
                        • Python и Twisted — Заметки о параллельной обработке данных (мультипроцессности)

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

                            Читать дальше →
                          • Сказка о тестировании

                            • Перевод

                            От переводчика


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

                            Читать дальше →
                          • Десять смертных грехов в оценке трудоёмкости разработки программного обеспечения

                              Введение


                              В этом топике я хочу представить вам, дорогие читатели, пересказ вебинара от человека, чьё имя не нуждается в представлении. Для того, чтобы изложить часовой вебинар в виде небольшого топика, мне пришлось значительно ужать комментарии автора, поэтому я сознательно не помечаю топик как «перевод». В этот раз Стив МакКоннелл решил поделиться с нами своим опытом в виде коротких тезисов, в которых он отражает самые страшные ошибки при оценке трудоёмкости разработки программного обеспечения. В 1998 году читатели журнала Software Development назвали Стива одним из самых влиятельных людей в индустрии разработки программного обеспечения на равне с Биллом Гейтсом и Линусом Торвальдсом. Стив — автор книги «Software Estimation. Demystifying The Black Art» — одной из самых популярных книг в области оценки трудоёмкости разработки ПО. Надо признаться, что вебинар был проведён относительно давно (июнь 2009 года), но информация, представленная там, совсем не устарела. Сам топик будет построен следующим образом. Заголовки будут достаточно точно переведены из презентации, которую показывал Стив, а в остальном я постараюсь отразить только основные мысли, чтобы не перегружать топик. Если кто-то посчитает, что ту или иную мысль я излагаю неправильно — милости прошу в комментарии, можно будет меня поправить.

                              Итак, поехали...
                            • Трудности перевода или История одной иконки

                                «Если вы ученый, и не можете в двух словах объяснить пятилетнему ребёнку, чем вы занимаетесь, — вы шарлатан».
                                (Курт Воннегут)


                                image

                                Ave, habrahomines, morituri vos salutant. Идущие на смерть приветствуют хабрачеловечество.

                                Приготовьтесь к беспощадному поединку. Сегодня на горячем песке Колизея сойдутся в кровавой схватке менеджер и программист. Менеджер подобен ретиарию, вооруженному сетью, трезубцем и кинжалом. Программист – мирмиллион с наплечником, щитом и гладиусом.

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

                                Менеджера можно понять. Ему важно сдать работу в срок. Объяснить менеджеру, что для выполнения работы нужно несколько больше времени, чем он планировал, иногда трудно. Менеджер мыслит единицами времени, человеко-часами. У него нет видимых причин доплачивать сотруднику за сложность реализации.

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

                                А загадки случаются. Порой – на самом простом месте.

                                Читать дальше →