• Программирование для начинающих: как стартовать и куда двигаться?

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

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

    UPD: Новичкам советую обратить внимание на комментарии — там активно и аргументированно корректируется этот план.

    Читать дальше →
  • Анализ утечек PermGen памяти в Java

    О чем речь?


    Кто занимался веб-разработкой на Java, наверняка сталкивался с такой проблемой как java.lang.OutOfMemoryError: PermGen space. Возникает она, как правило, после перезапуска веб-приложения внутри сервера без перезапуска самого сервера. Перезапуск веб-приложения без перезапуска сервера может понадобиться в процессе разработки, чтобы не ждать лишнее время запуска самого сервера. Если у вас задеплоено несколько веб-приложений, перезапуск всего сервера может быть гораздо дольше перезапуска одного веб-приложения. Или же весь сервер просто нельзя перезапускать, так как другие веб-приложения используются. Первое решение, которое приходит на ум – увеличить максимальный объем PermGen памяти, доступный JVM (сделать это можно опцией -XX:MaxPermSize), но это лишь отсрочит падение, после нескольких перезапусков вы снова получите OutOfMemoryError. Хорошо было бы иметь возможность сколько угодно раз перезапускать и передеплоивать веб-приложение на работающем сервере. О том, как побороть PermGen, и пойдет дальнейший разговор.

    Читать дальше →
  • Usability чеклист

    image

    Небольшой и полезный чеклист по usability. Проверьте свой ресурс перед тем как перейти к юзер-тестированию. Не претендует на «столп usability», которому необходимо следовать, но здесь собраны довольно полезные вещи.
    Читать дальше →
  • Онлайн редактор для Bootstrap— LayoutIt

      Twitter Bootstrap становится всё популярнее и популярнее, многие используют его в своих проектах, думаю еще больше людей используют для прототипирования интерфейсов. Я не исключение. И вот сегодня утром наткнулся на интересный сервис — LayoutIt. По сути LayoutIt — это онлайн редактор для создания интерфейсов с использованием Bootstrap. Редактор представляет собой Drag & Drop интерфейс.

      Читать дальше →
    • Видео лекций всего курса первой Школы разработки интерфейсов Яндекса

      • Tutorial
      Разработка интерфейсов — одно из важнейших направлений в Яндексе, сервисами которого пользуются миллионы людей. А ни один российский вуз, к сожалению, не готовит разработчиков интерфейсов. Все знания, которые необходимы современному верстальщику или фронтенд-программисту, приходится черпать из статей в интернете, книг, докладов на конференциях. Но зачастую этого бывает недостаточно. Почти каждого нового разработчика интерфейсов, которого мы принимали на работу, приходилось многому обучать.

      За долгое время работы в Яндексе нам удалось систематизировать все наши знания и огромный опыт в создании фронтенда веб-сервисов. Результатом этого осмысления и длительной работы стала первая Школа разработки интерфейсов, занятие которой шли в московском офисе Яндекса. Вся практическая часть обучения проходила в реальных проектах Яндекса. Теоретическая же состояла из лекций, которые читали ведущие разработчики интерфейсов Яндекса: Сергей veged Бережной, Михаил mishanga Трошев, Алексей doochik Андросов, Михаил azproduction Давыдов и другие.

      Выпускники первой Школы разработки интерфейсов Яндекса

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

      Читать дальше →
    • Git Rebase: руководство по использованию

      • Tutorial
      Rebase — один из двух способов объединить изменения, сделанные в одной ветке, с другой веткой. Начинающие и даже опытные пользователи git иногда испытывают нежелание пользоваться ей, так как не видят смысла осваивать еще один способ объединять изменения, когда уже и так прекрасно владеют операцией merge. В этой статье я бы хотел подробно разобрать теорию и практику использования rebase.

      Теория


      Итак, освежим теоретические знания о том, что же такое rebase. Для начала вкратце — у вас есть две ветки — master и feature, обе локальные, feature была создана от master в состоянии A и содержит в себе коммиты C, D и E. В ветку master после отделения от нее ветки feature был сделан 1 коммит B.


      Читать дальше →
    • Настройка Nginx + LAMP сервера в домашних условиях Часть 2: Настройка backend: PHP + MySQL

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

        В предыдущей статье, мы познакомились с настройкой связки nginx + apache в режиме хостинга и репозиториями dotdeb.
        В этой статье мы познакомимся с настройкой backend: PHP, MySQL.

        В части PHP мы познакомимся со следующими темами:
        — общая настройка PHP
        — правильная настройка PHP + Postfix для отправки писем через внутренний SMTP сервер посредством функции mail(),
        — настройка кеширования кода и/или данных на основе APC.

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

        Кто заинтересовался, добро пожаловать под кат
        Читать дальше →
      • Групповая разработка сайтов через git — автоматическое создание/удаление сайтов из git-бранчей

        • Tutorial
        В этой статье я расскажу, как создать групповую среду разработки сайтов через git с помощью git-хуков. Статья рассчитана на опытных системных администраторов, я лишь опишу алгоритм.
        Многое на эту тему уже обсуждалось, а я добавлю, как автоматически создавать или удалять сайты при создании/удалении бранчей в git-репозитории. Такая возможность может пригодиться, к примеру, если над разными частями сайта работают разные программисты и нужны разные площадки (бранчи). После основной разработки и тестирования выполняется merge в основную ветку, а бранчи и тестовые сайты удаляются или архивируются.

        Читать дальше →
      • Buildy: песочница для взрослых на HTML5

          Buildy — многопользовательская онлайн-игра, в которой можно строить всё, что угодно, без всякой определённой цели, просто так. Это трехмерный мир в изометрической проекции, в котором можно использовать готовые объекты из библиотеки (их больше четырёх с половиной тысяч!) или рисовать свои в редакторе. В игре есть чат, с помощью которого можно согласовывать свои действия с другими игроками. Кроме общего для всех мира Goon World III, в который по-умолчанию попадают все новые игроки, можно создавать свои закрытые площадки, доступ к которым возможен только по инвайтам.


          Читать дальше →
        • Арсенал веб-дизайнера

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

            Большие и популярные сайты


            Behance - работы лучших дизайнеров со всего мира

            Читать дальше →
          • 27+ ресурсов для онлайн-обучения


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

              Статья содержит перечень ресурсов для онлайн-обучения, представляющих интерес преимущественно для программистов.

              Читать дальше →
            • Базовые CSS-стили различных элементов

              • Tutorial
              В этом топике представлены лаконичные базовые стили для различных элементов: кнопок, ссылок, форм, теней, градиентов, которые можно использовать в своих проектах. Да и просто разобраться в принципах работы таких конструкций проще на несложных примерах.



              Демонстрация стилей / Скачать исходники
              Читать дальше →
            • Новое для веб-дизайнера за сентябрь 2012

                Сделал небольшую подборку новых полезных материалов для веб-дизайнеров за сентябрь 2012. Надеюсь, будет полезна хабровчанам.

                Полезные сервисы


                Easel.io — отличный сервис для прототипирования прямо в браузере.

                Читать дальше →
              • Как организовать процесс подписки на вашем сайте

                  Если у вас есть сайт, вы наверняка озабочены тем, чтобы ваши посетители могли получать новости, обновления и предложения самыми разными путями — через социальные сети, RSS, почту и так далее. Во всех случаях на пути пользователя стоит процесс подписки — и если в социальных сетях он упрощён максимально, то подписка на email-рассылку очень часто грешит ненужными сложностями. Поэтому мы решили посвятить очередную статью в нашем блоге юзабилити процесса подписки на вашу рассылку. На основе опыта UniSender мы расскажем о том, как упростить жизнь себе и вашему посетителю. Для начала разберём несколько грубых ошибок на следующем примере:


                  Читать дальше →
                  • +29
                  • 33.5k
                  • 9
                • PHPExcel и большие файлы

                  PHPExcel — отличная библиотека с огромным функционалом по работе с форматами xls, xlsx. Можно считывать, записывать, менять форматирование, задавать формулы, а из xlsx можно и картинки вытаскивать.

                  На хабре уже был пост про эту библиотеку - Универсальное чтение ячеек в PHPExcel. Я остановлюсь только лишь на главном минусе PHPExcel — вечно памяти не хватает, все время сыпятся ошибки «Fatal error: Out of memory». Этот пост о том, как это обойти.

                  Читать дальше →
                • Памятка пользователям ssh

                    abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

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

                    Оглавление:
                    • управление ключами
                    • копирование файлов через ssh
                    • Проброс потоков ввода/вывода
                    • Монтирование удалённой FS через ssh
                    • Удалённое исполнение кода
                    • Алиасы и опции для подключений в .ssh/config
                    • Опции по-умолчанию
                    • Проброс X-сервера
                    • ssh в качестве socks-proxy
                    • Проброс портов — прямой и обратный
                    • Реверс-сокс-прокси
                    • туннелирование L2/L3 трафика
                    • Проброс агента авторизации
                    • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
                    Читать дальше →
                  • 20 сервисов и советов для веб разработчиков

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

                    NounProject — лучшая и наибольшая коллекция SVG картинок

                    В связи с тем что кроссбраузерная поддержка SVG не идеальна, я делаю следующим образом, нахожу на этом сайте SVG картинку которая мне нужна, открываю ее в блокноте и в ручную корректирую цвет и размеры (иногда и саму картинку), потом открываю файл с картинкой в браузере, делаю скриншот картинки, обрезаю ее в фотошоп и сохраняю в gif с наимешьшими параметрами. Вывод — наилучшее качество картинки, так как качество SVG не изменяется при уменьшении или увеличении, и занимает наименьшее количество места, и как следствие, отсутствие дефектов, как например, размытые края, неполное окрашивание когда цвет изменяется заливкой и тд.

                    Codebeautifier — кроссбраузерная подготовка CSS файлов c уменьшением веса самого CSS файла.

                    Так как разные браузеры, в частности IE воспринимают некоторые параметры CSS по разному, это доставляет проблем при кроссбраузерности. С помощью этого ресурса можно создать CSS файл который будет идентично работать во всех браузерах.

                    Iterm2 — лучшая консоль для mac OS и замена страндартному терминалу.

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

                    Spritebaker — кодирует изображения и шрифты в base64 для последующей возможной вставки в CSS, что увеличивает скорость загрузки

                    Web developer — плагин для Firefox дающее множество возможностей.

                    Например, смотреть/вносить/редактировать куки, просматривать топографию для симметрии, инфо по картинкам и прочее.

                    ColorZilla — плагин для firefox позволяющий кликнуть мышкой на любой точке экрана и получить код цвета.

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

                    DataUrl — генерирует код из изображения.

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

                    Pjax — плагин которой позволяет изменять содержимое страницы без ее перезагрузки.
                    Читать дальше →
                  • Делаем скриншоты сайтов

                      Бродя по просторам PHP документации случайно наткнулся на две функции: imagegrabwindow и imagegrabscreen. Они умеют делать скриншоты в Microsoft Windows.
                      Заинтересовало. Кончилось дело тем, что был написан скриптик генерирующий полный скриншот любого сайта.
                      Итак нам необходимы:

                      Читать дальше →
                    • Современное школьное образование, часть 3

                        Первая часть про различные уровни сложности школьных задач.
                        Вторая часть про типы видео-лекций.

                        В этой части я хочу обсудить технологии школьного интернет-образования. Под школьным образованием я подразумеваю такое, при котором за успеваемостью ученика необходимо как-то следить. В качестве примеров будут рассмотрены:
                        khanacademy.org Гигант в этой отрасли.
                        eftsh.ru Электронная ФТШ, проект при МФТИ.
                        100ege.ru Портал по подготовке к вузовским олимпиадам, ЕГЭ и ГИА.
                        interneturok.ru и univertv.ru являются архивами лекции, но на данный момент отсутствует функционал взаимодействия с учеником.
                        dnevnik.ru Всероссийская бесплатная школьная образовательная сеть.
                        Читать дальше →
                      • Вебинар: Основы использования паттерна Page Object вместе с Selenium WebDriver

                          Это пятый вебинар из цикла бесплатных вебинаров по автоматизации тестирования.
                          Видеозапись (продолжительность 1 час 5 мин.):

                          Темы и детали видеозаписи под катом
                          Читать дальше →