Как стать автором
Обновить
53
0
Oksana @kisuxa

Пользователь

Отправить сообщение

Как разработчику развиваться в небольшом и не самом айтишном городе

Время на прочтение7 мин
Количество просмотров53K
Привет, меня зовут Серёжа, мне 31 год, я живу в Брянске — и это точно не технологическая столица мира. Первая за десять лет ИТ-конференция прошла в нашем городе в этом октябре, а названия местных компаний, за исключением пары федеральных аутсорсов, едва ли что-то вам скажут. Тем не менее живя в самой настоящей провинции, я смог выпустить ряд книг по программированию (и они даже приносят доход), стать гостем зарубежных подкастов и начал как докладчик выезжать на различные конференции.

Нет, это не история о том, какой я уникум. Несколько лет назад я не знал, что такое SOLID — и на просьбу расшифровать аббревиатуру честно спросил: “А что это?”. Много лет я плыл по течению, пока не осел в уютном “болоте”. Но потом очнулся и, кажется, за несколько лет смог выбраться на твердую землю. Не повторяйте моих ошибок)



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

Как начать деградировать, но не поддаться

Всего голосов 145: ↑137 и ↓8+129
Комментарии103

Работа не волк, часть 3. Новичок — вырасти или выжить?

Время на прочтение10 мин
Количество просмотров25K
Первое время на новой работе — это жизнь на иголках. Непонятно, куда вы попали, как устроена компания, что ценится в работе. Иногда даже после испытательного срока хочется сбежать от нового коллектива и не до конца понятных задач. Но ведь вы осознанно выбрали эту компанию, вы пришли в неё, потому что вас что-то привлекло. А значит, время бороться за возможности и авторитет — иногда даже матёрым профи. Готовы?



Часть 1. Поиск работы: источники, резюме, собеседование с HR
Часть 2. Устройство и адаптация: собеседуем с боссом, проходим испытательный срок с ветерком
Часть 3. Работа в роли новичка: рост в компании
Часть 4. Работа в роли опытного сотрудника: как не перегореть
Часть 5. Увольнение: я ухожу красиво
Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии7

Семь итераций наивности или как я полтора года свою дебютную игру писал

Время на прочтение32 мин
Количество просмотров78K
imagination С появлением у меня в первом классе Dendy вопрос кем я стану отпал сам собой буквально через пару недель — программистом конечно же. Я долго и упорно шел к этому, невзирая на отсутствие информатики в школе, работал в техподдержке известного всем регистратора параллельно с учебой в институте, но полноценная жизнь началась лишь в тот момент, когда меня наконец-то взяли хоть куда-то писать код.

Очень скоро я понял, что мало быть программистом, работающим от звонка до звонка и получающим за это деньги на карточку — всё самое интересное начинается, когда решаешь сам без всяких архитекторов, тестировщиков и тимлидов что-нибудь этакое написать и заставить работать. Желательно что-нибудь веселое и захватывающее. Игру, например.

Под катом лежат семеро очевиднейших (как мне сейчас кажется) граблей, неожиданно вставших у меня на пути, а потому способных с отличной от нуля вероятностью встать на пути любого, идущего дорогой разработки игр.
Семь не слишком оригинальных мишеней для лба, разбавленных повествованием
Всего голосов 100: ↑96 и ↓4+92
Комментарии137

Два способа разработки программного обеспечения, или Одна ночь из жизни программиста Миши

Время на прочтение9 мин
Количество просмотров53K


«Две тропинки идут рядом: путь жизни и путь смерти… Люди не идут никаким путём, ни путём жизни, ни путем смерти. Вихрь носит их, как солому.»
Густав Майринк, «Голем»

В офисе было тихо и темно, лишь стук клавиш и редкие щелчки мыши нарушали едва различимое жужжание кулера, да широкоформатный монитор освещал измождённое лицо regular developer'а Миши. Сторонний наблюдатель мог бы подумать, что идёт обычная рабочая ночь с пятницы на субботу. Так оно и было для тысяч других разработчиков по всему миру, но только не для Миши. Поставив очередную пустую бутылку под стол, он внезапно почувствовал, что граница, отделяющая его от гордого титула «senior developer», не так уж и далека.

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

Миша сглотнул и тихо спросил дрожащим голосом:

— Тим-лид Коля? Проджект-менеджер Изя? Рабочий день уже давно закончился, что вы здесь делаете? И к чему весь этот маскарад?
Читать дальше →
Всего голосов 258: ↑228 и ↓30+198
Комментарии87

Пишем платформер на Python, используя pygame

Время на прочтение11 мин
Количество просмотров353K
image
Сразу оговорюсь, что здесь написано для самых маленькихначинающих.

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

Что такое платформер?


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

Одними из моих любимых игр данного жанра являются «Super Mario Brothers» и «Super Meat Boy». Давайте попробуем создать нечто среднее между ними.
Читать дальше →
Всего голосов 93: ↑89 и ↓4+85
Комментарии46

Работа с PostgreSQL: настройка и масштабирование

Время на прочтение1 мин
Количество просмотров18K
image

Добрый день, хаброжители. Прошло много времени с выпуска 2 версии книги по PostgreSQL — успела выйти версия 9.1 и 9.2 этой замечательной базы данных. Материалов по практическому использованию этой БД также накопилось немало, поэтому я решил выпустить обновление по книге. Итак, встречайте:«Работа с PostgreSQL: настройка и масштабирование», 3-е издание.

Как и раньше, в книге исследуются вопросы по настройке производительности PostgreSQL, репликации и кластеризации. Список изменений можно глянуть на странице книги. Любые пожелания или замечания можно высылать по почте (в моем блоге указано) или писать в github issues (или даже делать pull request на исправления). Приятного прочтения!

Страница книги: postgresql.leopard.in.ua
Исходники: github.com/le0pard/postgresql_book
Всего голосов 83: ↑81 и ↓2+79
Комментарии16

Read only

Время на прочтение2 мин
Количество просмотров35K
Добрый день, уважаемые хабровчане.

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


Читать дальше →
Всего голосов 83: ↑53 и ↓30+23
Комментарии109

Полезная книга об искусственном интеллекте

Время на прочтение1 мин
Количество просмотров14K

Потапов, А. С. «Искусственный интеллект и универсальное мышление».


image

Людям, не слишком глубоко знакомым с проблемами искусственного интеллекта, но интересующимся ими, приходится знакомиться с достижениями в этой области через журнальные статьи, полные преувеличений и недостоверной информации. В результате, многие знают о невообразимых возможностях уже работающих квантовых компьютеров, искусственных нейронных сетях или цифровой эволюции, где вот-вот возникнет уже первый искусственный интеллект. За всем этим стоят реальные научный открытия, но их пересказ людьми, стремящимися к сенсациям, оказывается не более чем вымыслом. Настоящие открытия, составляющие саму суть прогресса в некоторой научной области, описываются в специальной литературе, понятной только профессионалам. Крайне трудно их изложить в ясной и интересной для неспециалиста форме. Однако именно это удалось сделать автору в представленной книге. В ней не только в доступном виде представлены базовые сведения из области ИИ, но также развенчаны многие мифы, широко распространенные в научно-популярной среде, и даже намечены вполне реальные, а вовсе не фантастичные, пути, которые могут привести к созданию настоящего искусственного интеллекта.
Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии18

Экспорт избранного Хабра в FB2

Время на прочтение2 мин
Количество просмотров9.4K
Ненавижу длинные вступления
И поэтому не буду писать их даже под спойлером.

  • Зачем?
    • Для оффлайнового просмотра на читалках.
  • Моя читалка не поддерживает FB2!
  • Хочу!
    1. Обзаводимся Python 2.7+. Тестировалось на Python 2.7.3.
    2. Ставим библиотеку BeautifulSoup 4. Вкратце варианты:
      • apt-get install python-beautifulsoup4
      • easy_install beautifulsoup4
      • pip install beautifulsoup4
      • Исходники и python setup.py install
    3. Качаем код из репозитория (прямая ссылка на последнюю версию).
    4. Открываем файл habrafav.py и в строке username = ... прописываем свой логин.
    5. python habrafav.py (или просто habrafav.py под Windows)
    6. Ждём. У меня с кэшированными данными экспорт ~150 статей занимает около 6 минут и 600 Мб оперативной памяти.
    7. Забираем habrahabr_favorites.fb2. Мой занимает примерно 62 Мб.

Читать дальше →
Всего голосов 88: ↑81 и ↓7+74
Комментарии50

Размер Java объектов. Используем полученные знания

Время на прочтение5 мин
Количество просмотров14K
В предыдущей статье много комментаторов были не согласны в необходимости наличия знаний о размере объектов в java. Я категорически не согласен с этим мнением и поэтому подготовил несколько практических приемов, которые потенциально могут пригодится для оптимизации в Вашем приложении. Хочу сразу отметить, что не все из данных приемов могут применяться сразу во время разработки. Для придания большего драматизма, все расчеты и цифры будут приводится для 64-х разрядной HotSpot JVM.

Денормализация модели

Итак, давайте рассмотрим следующий код:
class Cursor {
    String icon;
    Position pos;
    Cursor(String icon, int x, int y) {
         this.icon = icon;
         this.pos = new Position(x, y);
    }
}
class Position {
    int x;
    int y;
    Position(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

А теперь проведем денормализацию:
class Cursor2 {
    String icon;
    int x;
    int y;
    Cursor2(String icon, int x, int y) {
        this.icon = icon;
        this.x = x;
        this.y = y;
    }
}

Казалось бы — избавились от композиции и все. Но нет. Объект класса Cursor2 потребляет приблизительно на 30% меньше памяти чем объект класса Cursor (по сути Cursor + Position). Такое вот не очевидное следствие декомпозиции. За счет ссылки и заголовка лишнего объекта. Возможно это кажется не важным и смешным, но только до тех пор, пока объектов у Вас мало, а когда счет идет на миллионы ситуация кардинально меняется. Это не призыв к созданию огромных классов по 100 полей. Ни в коем случаем. Это может пригодится исключительно в случае, когда Вы вплотную подошли к верхней границе Вашей оперативной памяти и в памяти у Вас много однотипных объектов.
Читать дальше →
Всего голосов 43: ↑34 и ↓9+25
Комментарии40

Про Git на пальцах (для переходящих с SVN)

Время на прочтение8 мин
Количество просмотров279K
Год назад мы с командой решили перейти с SVN на Git. Зачем это было надо — писать не буду, т.к. на эту тему уже и так много написано. А хочу я описать типичные алгоритмы работы, понятные человеку, который долгое время пользовался SVN. Ниже — памятка, написанная для команды год назад, чтобы легче было мигрировать. Надеюсь, кому-нибудь пригодится.
Читать...
Всего голосов 179: ↑175 и ↓4+171
Комментарии100

Hibernate для самых маленьких и не только

Время на прочтение6 мин
Количество просмотров204K
Доброго всем времени суток! При написании программы, которая так или иначе будет взаимодействовать с базой данных, пользуются разными средствами. Это и старый добрый jdbc, также применяют: EclipseLink,TopLink, iBatis (уже MyBatis), Spring Framework и конечно же герой нашей статьи — Hibernate. Конечно я здесь перечислил не все средства работы с базой данных, но постарался указать самые распространенные. В данной статье будет показано, как при помощи Hibernate вызывать хранимые процедуры, маппить как таблицы, так и запросы к классам. В качестве подопытной базы данных возьмем Oracle.
Читать дальше →
Всего голосов 43: ↑40 и ↓3+37
Комментарии26

Сервис для более эффективного пополнения запаса английских слов

Время на прочтение2 мин
Количество просмотров49K
Добрый день!

Я хочу представить небольшой сервис, который создан, чтобы помочь в эффективном пополнении словарного запаса для английского языка:

image

Если коротко, работает он следующим образом.

1. Вы загружаете текст, который хотите прочитать. Это может быть URL статьи из интернета, книга или статья в pdf, doc, txt, ps или субтитры.

2. Система строит статистику слов и отображает слова, отсортированные по частоте употребляемости в тексте. Предварительно к словам применяется лемматизация (т. е. слова make и made будут считаться идентичными).

3. Вы отмечаете знакомые слова, а также слова, которые надо изучить.

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

А теперь чуть подробнее
Всего голосов 86: ↑82 и ↓4+78
Комментарии72

Загрузка классов в серверах приложений, особенности JBoss AS 7

Время на прочтение5 мин
Количество просмотров9.1K
Java характеризуется динамической загрузкой классов. Для поиска и загрузки используется механизм делегирующих classloader'ов. В Java SE окружении их количество ограничивается 2-3, но в серверах приложений оно приближается к 10 иерархическим classloader'ам. Этим объясняется большое время запуска (обычно от минуты) и деплоя приложений.

В JBoss AS 7 разработчикам удалось сильно сократить время запуска (пустой appserver запускается за 3-4 секунды на рабочей станции). Этому способствовала новая система загрузки классов в данном сервере приложений. Такой подход всё же обладает своими недостатками.

Данная статья касается механизма загрузки классов в различных окружениях, особенностях работы с JBoss AS 7, сопряжения с системой сборки Apache Maven и IDE IntelliJ IDEA.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии8

Почему IDEA лучше Eclipse

Время на прочтение5 мин
Количество просмотров213K

Священный спор


Принято считать, что есть «вечные» вопросы, на которые нет правильного ответа. Например, что лучше: Windows или Linux, Java или C#; Чужой против Хищника или Чак Норрис против Ван Дамма.

Одним из таких холиваров считается выбор лучшей IDE для Java:


Идут постоянные споры о том, в которой из них больше плагинов, горячих клавиш и т.д. Различий так много, что трудно выбрать, какие из них важнее, и все сходятся в одном: обе IDE примерно одинаковы по своим возможностям, и выбор одной из них — это дело вкуса.

Так вот, я утверждаю, что это не просто дело вкуса. Есть объективные причины, почему
Intellij IDEA однозначно лучше, чем Eclipse.

Подчёркиваю, мы сейчас рассматриваем обе среды именно как Java IDE.

Я не буду приводить кучу мелких различий вроде плагинов, горячих клавиш и т.п. — этому посвящены многие страницы в интернете, а объясню лишь одно, самое главное отличие. Как правило, о нём не знают ни идеяшники, ни эклипсофилы, ибо первые привыкли к нему и не знают, что в других IDE этого может и не быть, а вторые привыкли жить без него, и даже не догадываются, что может быть лучше. Более того, эклипсники его не замечают, когда пробуют IDEA ради интереса, ибо привыкли работать по-старому.

Итак, главное различие между IDEA и Eclipse
Всего голосов 185: ↑139 и ↓46+93
Комментарии262

Миграция java-приложения на Fork/Join или о чём нужно помнить

Время на прочтение3 мин
Количество просмотров12K
С выходом седьмой версии JDK нам, счастливым разработчикам на Java, стал доступен из коробки фреймворк Fork/Join, о котором уже писали на хабре тут. Фреймворк в плане API очень похож на уже привычный ExecutorServices, но даёт весьма ощутимый прирост производительности и действительную «легковесность» потоков.

Здесь, я бы хотел рассмотреть на что стоит обратить внимание при переходе на Fork/Join.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии14

Шокирующий Objective-C для Java программистов

Время на прочтение4 мин
Количество просмотров26K

О чем эта статья?


Два факта. В мире много Java программистов. Популярность Objective-C растет. Вывод: Java программист, изучающий Objective-C не такая уж редкость. Если знать ключевые различия между языками, то можно эффективно использовать существующие знания Java и быстрее начать писать на Objective-C.
Читать дальше →
Всего голосов 78: ↑65 и ↓13+52
Комментарии161

5 вещей, которых вы не знали о многопоточности

Время на прочтение10 мин
Количество просмотров292K
Хоть от многопоточности и библиотек, которые её поддерживают, отказываются немногие Java-программисты, но тех, кто нашёл время изучить вопрос в глубину ещё меньше. Вместо этого мы узнаём о потоках только столько, сколько нам требуется для конкретной задачи, добавляя новые приёмы в свой инструментарий лишь тогда, когда это необходимо. Так можно создавать и запускать достойные приложения, но можно делать и лучше. Понимание особенностей компилятора и виртуальной машины Java поможет вам писать более эффективный, производительный код.

В этом выпуске серии «5 вещей …», я представлю некоторые из тонких аспектов многопоточного программирования, в том числе synchronized-методы, volatile переменные и атомарные классы. Речь пойдет в особенности о том, как некоторые из этих конструкций взаимодействуют с JVM и Java-компилятором, и как различные взаимодействия могут повлиять на производительность приложений.
Читать дальше →
Всего голосов 86: ↑77 и ↓9+68
Комментарии40

Учимся готовить: Spring 3 MVC + Spring Security + Hibernate

Время на прочтение12 мин
Количество просмотров355K
Добрый день! Меня зовут Антон Щастный.

Это моя очередная статья, посвящённая разработке веб приложений на Java. Хочу предложить вам сделать небольшую систему учёта клиентов, написанную с использованием фреймворка Spring и библиотеки Hibernate.

Что будет в приложении:


Будет простой менеджер контактов, позволяющий добавлять в базу новые записи, просматривать имеющиеся, удалять ненужные. Сведения будут храниться в базе данных. Доступ к приложению – через веб, с аутентификацией и авторизацией пользователей.

Что будем использовать:


  • веб фреймворк Spring MVC,
  • фреймворк Spring Security,
  • ORM библиотеку Hibernate,
  • MySQL в качестве СУБД.

Инфраструктура:
  • редактор SpringSource Tool Suite,
  • сборщик проектов Maven,
  • система логгирования Log4j,
  • постоянное подключение к интернету.


В моей предыдущей статье о Spring MVC был упущен ряд моментов по использованию аннотаций в Java-коде и применению Maven для сборки проекта. В данной статье я попытался исправить упущение.

Цель статьи – показать начинающим веб разработчикам совместное использование различных технологий платформы Java.

Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии52

Топ-5 самых впечатляющих книг, которые должен прочесть каждый разработчик ПО

Время на прочтение3 мин
Количество просмотров379K
Не так давно промелькнула ссылка на достаточно свежее (осень 2011) англоязычное голосование со скромным названием "самая впечатляющая книга, которую должен прочесть каждый разработчик программного обеспечения" и описанием:

Если бы вы могли вернуться в прошлое, к самому началу своей карьеры разработчика и сказать самому себе: «прочитай именно эту книгу», в самой начале своей карьеры разработчика, какую бы книгу вы рекомендовали?

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

Однако в данном небольшом посте я возьму на себя смелость перечислить ТОП-5 тех самых книг, победивших в голосовании, переведенных на русский язык. И дать небольшие комментарии, ведь книги действительно этого достойны. Да, лично я бы поменял некоторые места, однако положимся на «мнение зала» ресурса Stack Overflow.
Читать дальше →
Всего голосов 236: ↑219 и ↓17+202
Комментарии182

Информация

В рейтинге
Не участвует
Откуда
California, США
Зарегистрирована
Активность