Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и регистрируйся!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

четверг, 26 февраля 2015 г.

Мои доклады о том, что надобно готовить ребятам если они хотят стать J2EE dev

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

Хочешь получить видео этого семинара, а так же записи других семинаров на тему подготовки к IT:
- доклад "У тебя получITся - или как устроиться в своюб первую IT компанию" о том, как готовиться к собеседованиям, проходить их и что делать первый год на работе.
- доклад "Айтишник" о том, как развиваться внутри компании
- и собственно доклад "Что тебе предстоит узнать, как будущему j2EE разработчику" о том, каким тебя хотят видеть в компании и какую структуру тренинга и темы мы рекомендуем для тебя если ты выбрал j2ee направление
- так же ты попадаешь в мою рассылку на тему всяких вкусностей для начинающих джавистов и будешь получать видяшки моих будущих докладов на эту тему.
Если да! - заполни формочку. После подтверждения оплаты в течении дня на твой email вышлю все материалы. Если что-то не так - пиши мне на почту apofig(гав)gmail.com











Моя непрочитанная библиотека

Про библиотеку. Вчера ночью я рядом с кроватью собрал свою нетехническую библиотеку в одном месте. Многие начаты, некоторые уже прочитаны. Я не сторонник читать книгу целиком и сразу - я за практические эксперименты. Прочитал чуть - иди пробуй. Просто знать - это вредно.... А библиотека у меня получилась напольная :) Потом смастерю полочки. Зато теперь я любой момент, когда мне захочется получить новую порцию информации - мне далеко идти не надо, взял книгу и начал читать. А то эти всякие фейсбуки, как я уже писал раньше со своими новостными лентами как информационные пиявки - присасываются и айда закачивать инфу. 


Идем дальше. Вчера была дочитана одна замечательная книга. В ней я получил помимо прочих один совет на тему информации и сознания. Сознание, говорят, такая штука, что ее нельзя оставлять без контроля - тогда она начинает переживать за все. За прошлое, за будущее, за курс доллара, за лишние килограммы, за прыщик на лбу. Его надо постоянно загружать под завязку. Появилась свободная минута? Читаем заготовленную книгу или видео, слушаем слайдкаст или аудиокнигу. С книги переключаемся на делание дела. Потом размять тело, лучше пойти прогуляться и по дороге если чувствуешь, что опять накрывает мыслями - снова достать что-то заготовленное, почитать чуть и дальше обдумывать уже его. Ни минуты не стоит оставлять сознание наедине с опытом. Будет переживать... 

среда, 18 февраля 2015 г.

Счет 14:3 или как женщины ведут счет

Ой, так правда, что аж плакал...


Полная версия тут...

"Тре пахати..." (с) Кузьма Скрябин

Вот сегодня увидел на фейсбуке.


вторник, 17 февраля 2015 г.

Отдавая ты становишься больше

Была у нас переписка в компании. Там появилось предложение записать видео встречи. Я поддержал как-то так.

Ребята, любые выступления стоит записывать на видео. 


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

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

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

Запись выступлений это не дорого, но очень полезно. 

И еще, не волнуйся, если контент вдруг попадет в массы. 



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

- подбирать слова, быть экологичными

- быть более презентабельными, продающими

- делать немного больше, чем они могут по-умолчанию

С видеоконтентом можно потом делать вот что:

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

- дать человеку (внешнему фрилансеру или волонтеру), чтобы по нему составил пост-стенографию. Одно часовое видео может сгенерить 3 поста. 50 видео тянут уже на книгу. Это очень офигенский лайвхак. Помнишь мой последний спитч для выпускников GoQA? сколько он занял - пол часа? Вот по нему получился такой вот пост http://www.apofig.com/2015/02/3-it-goqa.html я потратил не мало времени, вспоминая о том, о чем говорил. И потому это был челлендж связанный с тем "а не потратить ли мне время на еще чего-нибудь". А если была бы запись, я мог бы аутсорсить стенографирование кому-то за минимум ресурсов. 

- это дает возможность тем, кто не успел и не может посмотреть доклад все же посмотреть его. 

- это дает возможность посмотреть доклад например в поезде, а не какой-то туповатый сериал по-умолчанию

- еще много других пока еще не открытых плюшек.


Авторы контента часто волнуются, что:

- их не так поймут

- их контент своруют

Переживать стоит, если выкладывать контент один раз - так по одному посту или видеоролику не будет полной картины и будут всякие недопонимания. Но если ты делаешь то же в 10й раз, то вырисовывается уже общая картина. 

Теперь что касается украдут. Да, если ты делаешь что-то клевое могут подглядеть и скопипастить что-то для себя. Если это "конкурент (а я люблю слово потенциальный компаньон) то ему это поможет стать лучше. Он позже обратится к тебе за помощью, чтобы понять почему ты сделал именно так. Понимаешь? У тебя в голове есть что-то, чего нет ни у кого - именно это что-то позволяет генерить уникальный контент. Копирование его не принесет много пользы копипастеру, оно только чуть пнет его в сторону развития. А ты всегда сможешь придумать еще. Не стоит держаться за идею, как за самое последнее, что тебя посетило и больше никогда не посетит. Идей будет еще больше. Они будут еще круче. В 10 раз. Потом еще в 10 раз. 

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

Отдавая ты становишься больше. 

Нет ничего круче своей собственной библиотеки, библиотеки непрочитанных книг

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


А библиотека - так вообще мое место силы. Я бы там в тишине и спокойствии проводил бы часы напролет. 

Странно, откуда такая тяга? Тяга к путешествиям... Ведь если начинаешь читать, то уносит тебя в неведомые дали. Это в 100500 раз круче всяких разных снятых фильмов. Потому что режисер, постановщик, актеры, декоратор, костюмер - все это твое воображение...

Кстати, прям сейчас я пишу одну книгу. По чуть чуть. 

воскресенье, 15 февраля 2015 г.

Вот оно мастерство стрельбы из лука

Спасибо Ивану Мосеву

Что делать если облил ноут водой

Быстро отключить шнур питания и вытащить батарею!

Надеюсь ты не гуглишь на нем это прямо сейчас. Потому как, ноут, который облили водой надо выключить самым экстренным способом. Жестко и пофиг что винда скажет. Даже не через кнопку выключения питания и удерживая ее секунд 5-10. Отрубить питание тут же. Время идет на секунды. У меня водичка пришлась больше на матрицу и через 3 секунды я уже видел как мерцает изображение и на 4ю оно погасло. Если залиты внутренности ноута, тут еще хуже последствия могут быть.

После желательно перевернуть ноут на 180 градусов относительно струи, по которой пишла порция воды. Зачем? Чтобы не затекало дальше то, что натекло. Тут же стоит промокнуть чем-то хорошо впитывающим воду те капельки, что на поверхности, чтобы оно не втянулось через щели ноута. Но самое главное - выключить питание и больше не включать его из любопытства. Скорее всего сейчас еще не все так плохо, как будет, если минутку поработать за мокрым компом.

Дальше. Варианта два. Сервис или попробовать разобрать и высушить самому. Если заливали водой, то можно и вторым путем пойти. Если сладким чаем, пивом или кофем (не чистой водой), то лучше в сервисный центр. Вообще, если в прошлом ни разу не разбирал ноут на части и потом не собирал его успешно (чтобы работало как было), то лучше сразу сервис. Не так откроешь крышку, не так дернешь шлейф, не там прикоснешься пальцем, чуть отверткой колупнешь по не осторожности и все.

Я же набрался смелости (в прошлом три ноута выживали после моих ковыряний в них) и разобрал ноут. Главное тут открутить все винтики и не открывать крышу, если что-то не идет. Силы не надо. Обычно крышка закрыта на зашелки пластиковые кроме винтиков, там надо акуратненько поддеть. Помимо винтиков по периметру есть еще скрытые винтики: удерживающие клавиатуру, скрытые под ней или под винтом. Разработчики хардом любят прятать их в самых неожиданных местах. Вот пример как это делается. Есть полно видео и текстовых хаутушек. Главное помнить - силы не надо. Все должно отходить легко.

Разобрав ноут я понял, что внутри все ок, капелек визуально не было нигде. Пошел разбирать матрицу - вот там то и было много воды, где-то столовая ложка в общей сложности. Проблема в том, что матрица не влагостойкая и впитала через щели купу воды. как-то раз ребенок в возрасте 3х лет насмотревшись мультиков, где учили что при температуре надо поливать водой, потрогала ноут и поняла - ему надо охладиться. Ноут выключили не сразу и потому пришлось менять матрицу, все внутри закисло и контакты разъелись. У меня же все было быстро, потому я решил спасать матрицу. Разобрал ее, плоской линеейчкой с туалетной бумагой побывал во всех щелях между слоями и повпитывал самые яркие капельки. Пришлось отклеить пару клейких лент. После я устроил матрицу над обогревателем, чтобы она нагрелась до температуры 30-40 градусов в разобраном виде. Я ожидал, что вода испарится и покинет область матрица с конвективными потоками. Главное тут не передеражить, потому как чуть не поплавилось все нафиг :) Можно было и фен, но времени было 4 утра.

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

Вообще ноут можно не нагревать, достаточно оставить его в разобранном состоянии на сутки не включая. Но я бы все же чтобы ускорить этот процесс на 5-10 градусов относительно окружающей среды все же его подогрел (только не перестараться бы!).

среда, 11 февраля 2015 г.

Кто должен был убрать ЭТО?

Был сегодня на собеседовании в одной тренинговой компании. Очень открытые и приятные ребята. После общения настроение очень приподнятое. Иду пешком в сторону дома, обдумываю возможные варианты сотрудничества. Солнышко светит в лицо, что еще больше поднимает настроение. Класс. Внутри чувство весны. Предвкушение будущего. Ничего не мешает...

Подхожу на остановку. Много людей. Ну возле вокзала всегда так. И тут вижу это. Декомпозированный на части молодой голубь. Прямо под ногами у ожидающих троллейбуса. Наверное бедняга увлекся чем-то и не успел из под колес выбраться. Естественный отбор никто не отменял. Ну ничего особенного. Кишки, кровища. Взрослый человек в худшем случае сморщится. Меня этим вообще не удивить, я раз присутствовал на вскрытии в мед.училище. Обошлось без обморока. Но сразу же сработала реакция, где мой ребенок, не видит ли этого. Рано еще ему такое смотреть. Я был сам, но внутри передернуло и мысль пошла дальше. Я оглянулся и увидел несколько детей, сверстников моей дочки с их родителями. Картинка приблизительно такая


Купа людей. Всем неприятно смотреть туда. Есть дети, их родители их отгораживают, мол не смотри туда. Но никто не шелохнется сделать шаг в сторону. Ведь для этого есть специальные службы. Кто-то должен это убрать!!! Мы жеж в европейской стране живем!!! Ага, щас. Уберут. И сделают это не раньше завтра утром. А сейчас на это зрелище будут смотреть пару сотен людей. Минут 3-5 пока ждут троллейбуса... 

Вспоминается женщина одна из прошлого моего. Мой родной город. Центральная площадь. Выходной день. Много людей. Где-то на одной из лавочек люди без определенного места жительства устроили себе столовку. Поели и оставили все как есть. Потом ушли. Купа кульков. Крошки. Объедки. Рядом через лавочку сидели женщина со своим кавалером (в возрасте оба) и когда увидела, что соседи за собой не прибрали объедки взялась убирать за ними. Прохожие наблюдающие за этой картиной в один голос "оставьте - это уберут". А она им (и тут стало понятно, что она турист, потому как говорила с акцентом) - "я не могу сидеть напротив такого, если никто не убрал, то уберу я". Убрала и продолжила свои дела. Я тогда был мал еще и не очень-то понял, что произошло. Но женщина и ее странное поведение как видишь на всю жизнь запомнились...


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

Да фу. Но пусть этот момент им запомнится. Рад, что это увидели больше людей. Сегодня у большинства из них точно был не совсем обычный день. И я за то, чтобы оставлять след в истории незнакомцев. Как та вот пожилая женщина-турист в моей. Обычно самый неожиданный прохожий больше всего меняет нашу жизнь, чем лучший друг, который каждый день твердит что-то, по его мнению полезное для тебя, а ты и не слушаешь. 

Еще. Говорят чисто не там где убирают, а там где не мусорят. И да и нет. Чтобы не мусорить надо понимать ценность чистоты. Чтобы это понять, надо полюбить процесс уборки. Полюбить это можно не в мыслях (советах), а только делая. Убирать за собой. Но больше за другими. Пусть они мусорят. И видят, как за ними убирают те, кто этого не должен делать. Это им поможет усомниться. Верю в это. А пройдя школу уборки автоматически научишься не мусорить. Так что чисто там, где каждый научился убирать за другими. Не только у себя дома, на крылечке. А и по дороге на работу - на улице, в общественном транспорте, на самой работе. На отдыхе. Везде где ты это можешь сделать. 


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

вторник, 10 февраля 2015 г.

Во сне мы учимся

Что бы ты не делал, не учил. Сегодня - тот день, когда надо выложиться по полной. Игнорируя тот факт, что нифига не получается. Пробовать, даже нет - делать до последнего. Даже если чувствуется потолок и развитие не идет. Еще чуть-чуть. До полного отключения мозга :) И еще чуть-чуть после этого. Ща объясню зачем...

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


А вот и пруф. 

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

Вот как я играл вчера вечером (всего где-то часа два играл), первые 15 минут было видно как получается, а потом сплошное задротство без видимого результата. На аудио первые 20 минут, все остальное в таком же ритме :) 


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

Но сегодня утром, я еще даже глаза не умыл :) сразу пошел проверить как оно. И вот что я услышал...


Этого бы не произошло, если бы я остановился вчера как только потерял интерес. Сегодня у меня было бы чуть-чуть лучше, но все то же. 

Я уверен, что так со всем, потому что так работает наш главный CPU - моцк. Где-то даже читал, что ночью мозг работает еще интенсивнее, чем днем. Он разбирает полученный за день опыт. А опыт - это большое количество фейлов. Но если его не нагрузить этим самым достаточным количеством фейлов, то он не сможет сформировать картину мира и не будет знать как действовать. Вот почему надо продолжать фейлиться (собирать знания о мире) не смотря ни на что. Завтра утром все станет на свои места. Не даром говорят "утро вечера мудренее"...

Про опыт, повторюсь, но картинка настолько клевая...


А вот что разучивал...

понедельник, 9 февраля 2015 г.

Еще одна реализация пула коннекшенов (на покритиковать)

Есть у нас jdbc драйвер, через него коннектимся к базе и кверями достаем данные. Никаких там супер-умных ORM. Напрямую. Все запросы конечно же кучкуются в некотором DAO классе. Так вот при каждом запросе создавать Connection к базе и тут же его закрывать не оптимально. Не ну можно для начала, но дорого по времени. И вот у меня руки зачесались это все дело как-то причесать. Опыта подобного ранее у меня не было - все какие-то фремворки использовал монструозно-ентерпрайзные, инкапсулирующие это все и требующие только конфигурации. А тут надо почти велосипед. Потому и попрошу покритиковать, кто в теме.

Итак начну с клиентского кода - DAO.

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;

public class AddressDAOImpl implements AddressDAO {
    private static Logger logger = Logger.getLogger(AddressDAOImpl.class.getName());

    private ConnectionPool connections;

    public AddressDAOImpl(Properties properties) {
        try {
            Class.forName(properties.getProperty("jdbc.driver"));
        } catch (ClassNotFoundException e) {
            logger.log(Level.WARNING, "Cant find jdbc driver", e);
        }
        // конфигурим пул пропертизами и количеством одновременно работающих тредов
        connections = ConnectionPool.with(properties).andThreads(18); 
    }

    @Override
    public void addPerson(final Person person) throws DAOException {
        // вот так запускаем кверю
        connections.query("add person",
                "insert into Persons values (?, ?, ?)",
                // это штука, которая вызовется когда коннекшен будет готов выполнить кверю
                new ConnectionRunner() {
                    @Override
                    public Object connect(PreparedStatement statement) throws SQLException {
                        statement.setLong(1, System.currentTimeMillis());
                        statement.setString(2, person.getName());
                        statement.setString(3, person.getPhoneNumber().getNumber());
                        statement.executeUpdate();
                        return null;
                    }
                });
    }

    @Override
    public Person findPerson(final String name) throws DAOException {
        return connections.query("find person",
                "select * from Persons where name = '" + name + "'",
                // эту штуку так дженерик, ее можно конфигурить типом возвращаемого результата
                // в данном случае Person
                new ConnectionRunner<Person>() {
                    @Override
                    public Person connect(PreparedStatement statement) throws SQLException {
                        try (ResultSet data = statement.executeQuery()) {
                            if (data.next()) {
                                String name = data.getString("name");
                                String phoneNumber = data.getString("phoneNumber");
                                long date = data.getLong("timestamp");

                                return new Person(name, phoneNumber, date);
                            }
                            return null;
                        }
                    }
                });
    }
... 
Как можно заметить я заюзал подход, который применяет Spring в своем jdbc templаte. Не так продуманно в мелочах как у них, но все же. Коннекшен пул конфигурится пропертями загружаемыми из файла properties и количеством тредов, которые будут инкапсулировать в себе коннекшен и выполнять запрос.
public class PropertiesReader {

    // просто прочитали
    public static Properties read(String fileName) {
        Properties result = new Properties();
        try (InputStream input = new FileInputStream(getUrl(fileName).getFile())) {
            result.load(input);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }

    // просто записали, ничего необычного
    private static URL getUrl(String fileName) {
        return PropertiesReader.class.getClassLoader().getResource(fileName);
    }

    public static void write(String fileName, Properties properties) {
        try (OutputStream output = new FileOutputStream(getUrl(fileName).getFile())) {
            properties.store(output, null);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
А вот сам пропертиз файл
jdbc.driver=org.sqlite.JDBC
url=jdbc:sqlite:resources/db.db
user=user
password=pass
Вот так конфигурим дао (в тестах)
        Properties properties = PropertiesReader.read("database.properties");
        AddressDAOImpl dao = new AddressDAOImpl(properties);
        dao.addPerson(new Person("alex", "0993527", 0));
Запрос хоть и выполняется с претензией на ассинхронность, но в данной реализации я все же фьючер дергаю сразу и жду ответа. Конечно же пул коннекшенов можно было реализовать и через синхронизированную какую-то Queue. Но я хотел поиграться с потоками. Заявкой на это был Executors.newFixedThreadPool, встречавшийся в исходном коде. Разобравшись что оно такое значит пришел к такой реализации. В общем вод реализация...
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;
import java.util.concurrent.*;
import java.util.logging.Level;
import java.util.logging.Logger;

// вот тут все самое вкусное. Три часа у меня этот "красавец" забрал 
public class ConnectionPool {
    private static Logger logger = Logger.getLogger(ConnectionPool.class.getName());

    private ExecutorService executor;
    private Properties properties;

// тут методы конфигурирования. 

    public ConnectionPool(Properties properties) {
        this.properties = properties;
    }

    public static ConnectionPool with(Properties properties) {
        return new ConnectionPool(properties);
    }

    public ConnectionPool andThreads(int count) {
        // создаем екзекьютор и конфигурируем его факторей
        this.executor = Executors.newFixedThreadPool(count, new ThreadFactory() {
            @Override
            public Thread newThread(Runnable runnable) {
                // которая будет нам создавать наши треды с готовым коннекшеном (только с пылу-жару)
                // runnable тут то, что мы будем просить выполнить у екзекьютора - 
                // это будет передаваться свободному треду на выполнение
                return new WorkerThread(getConnection(), runnable);
            }
        });
        return this;
    }

// конец конфигурирования

    public <T> T query(final String message, final String query, 
                             final ConnectionRunner<T> runner) throws DAOException {
        if (executor == null) { // если вдруг забыли проконфигурить на клиенте, то сделаем это
            andThreads(1); // одного треда-коннекшена нам достаточно
        }

        // а вот тут сделаем хитрость попросим екзевьютора выполнить наш запрос 
        // завернутый в Callable, потому как Runnable нам не ок
        // по одной причине - из него не так просто вернуть результат, 
        // а Callable Как раз для этого придуман.
        Future<T> result = executor.submit(new Callable<T>() {
            @Override
            public T call() throws Exception {
                try {
                    // получаем ссылку на наш тред, из него вытаскиваем коннекшен
                    WorkerThread thread = (WorkerThread) Thread.currentThread();
                    Connection connection = thread.getConnection();
                    logger.log(Level.INFO, "Query on connection " + connection.hashCode());

                    // фигачим кверю, получаем стейтмент и передаем клиенту 
                    // в его реализацию интерфейса ConnectionRunner 
                    try (PreparedStatement statement = connection.prepareStatement(query)) {
                        return (T) runner.connect(statement);
                    }
                } catch (SQLException e) {
                    throw error(e, message);
                }
            }
        });

        // но мы получили так называемый фьючер сейчас, но результата сейчас еще может не быть в нем
        // потому если мы попросим его гет, то зависнем тут пока не получим результат. 
        // если бы мы вернули фиючер клиенту, то можно было бы сказать, 
        // что у нас запросы выполняются ассинхронно
        // но если подождем тут - то все будет синхронным
        try {
            return result.get();
        } catch (InterruptedException e) {
            throw error(e, message);
        } catch (ExecutionException e) {
            throw error(e, message);
        }
    }

    // генерим наш бизнес эксцепшен если что
    private DAOException error(Exception exception, String message) throws DAOException {
        String log = "Can not " + message;
        logger.log(Level.WARNING, log, exception);
        return new DAOException(log, exception);
    }

    // метод получения коннекшена, все просто 
    public Connection getConnection() throws DAOException {
        logger.log(Level.INFO, "Get connection!");

        try {
            return DriverManager.getConnection(
                    properties.getProperty("url"),
                    properties.getProperty("user"),
                    properties.getProperty("password"));
        } catch (SQLException e) {
            throw error(e, "get connection");
        }
    }

    // на случай, если мы захотим потушить свет и освободить все треды и их коннекшены 
    public void shutdown() {
        logger.log(Level.INFO, "Shutdown pool!");

        executor.shutdown();

        try {
            executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
        } catch (InterruptedException e) {
            throw error(e, "shutdown connection pool");
        }
    }
}
Дальше идут не сложные тред
import java.sql.Connection;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class WorkerThread extends Thread {
    private static Logger logger = Logger.getLogger(WorkerThread.class.getName());

    private Connection connection; // инкапсулируем коннекшен
    private Runnable task; // и ту часть задачи, которую хотим решить. 
    // помнишь Callable с выполнением запроса, так вот он будет внутри этого Runnable, каждый раз новый 

    public WorkerThread(Connection connection, Runnable task) {
        this.task = task;
        this.connection = connection;
    }

    @Override
    public void run() {
        logger.log(Level.INFO, "WorkerThread start task!");
        try {
            task.run(); // выполняем наш runnable и вместе с ним объявленный выше Callable
        } finally { 
            // в любом случае, что бы не случилось (отработал ли тред или 
            // поломалось че по ошибке) - нам надо закрыть коннекшен
            logger.log(Level.INFO, "WorkerThread finished task. Connection " + connection.hashCode() + " closed!");
            if (connection != null) {
                try {
                    connection.close();
                    connection = null;
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public Connection getConnection() {
        return connection;
    }
}
И интерфейс
import java.sql.PreparedStatement;
import java.sql.SQLException;

public interface ConnectionRunner<T> {
    T connect(PreparedStatement statement) throws SQLException;
}
Вот как бы и все

Можешь изменить это? Нет?! Не волнуй тогда тему!

Пару последних недель я часто волнуюсь, за то за сё за третье и десятое. Подробней. Я без работы сейчас, курс доллара стремится чёрт-те куда, тренинги развиваются не так быстро как хотелось бы. В том смысле, что сейчас как-то не охотно люди расстаются со своими деньгами, хотя получают ЗП привязанную к $. Ну это так всегда было. Денег много получили, а в голове ментальность СССР осталась - экономить на всем. Вот если сделаю бесплатно ивент - соберется группа сразу. А если 1000 грн, то еще скидку попросят, присматриваться будут. Но это ок. Такие правила игры. Я к тому, что без аутсорсинговой титьки сейчас очень волнительно :)


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

Вчера я это заметил очень ярко со стороны. Шел я с ребенком в развлекательный центр (папин день у нас), по дороге позвонил Другу, пригласил пойти вместе, пообщаться - давно не виделись. С удовольствием согласился. Супер! Идем, общаемся. Мы здесь и сейчас. И все супер. Но на обратном пути случилось что-то и друг стал все больше уделять свое время мобильному телефону, там чат у него какой-то был напряженный. Вижу волнуется. Пытается что-то предпринять. Спрашиваю - а ты сейчас можешь что-то решить, кроме как продолжать отвечать в чате? От тебя что хотят, чтобы было таска сделана. Ну вот придешь домой и сделаешь таску эту. Сядешь за комп (без него таска не сделается, не на телефоне ведь), уделишь к ряду пару часов и будет готово. А сейчас давай поговорим. 

Сказал это и на себя со стороны взглянул. Сам такой же. Чем больше проектов, тем больше мыслей из серии ДАЛЕКО НЕ здесь и сейчас. 

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


Остановиться и удивиться чему-нибудь. Потом позвать других ребят и дать им удивиться тому же. Хорошая идея. У меня на футболке написано "Удивляй". Куда тогда мне торопиться? 

Алгоритм приблизительно такой. Мысль-зануда в голове? Да?.. (пошел рисовать...)


Вот как-то так.

Что меня вчера удивило? Я исследовал новую для себя тему - изобретал коннекшен пул чтобы в многопоточной среде все работало. Это тестовое задание на один из геймдев проектов, куда я направил свое резюме. Если в ближайшее время не заработаю на тренингах, мне нужен план Б, его и прорабатываю сейчас. А по тренингам: на вебинар по TDD записалось несколько человек, что радует. Прорабатываю с друзьями серию вебинаров для рекрутинга. Веду джава группу в GoIT. Читаю чаще книги. Учусь новому.

В последнее время очень помогает вот что. У меня ряд проектов, каждый из которых требует внимания. Все и сразу. Но сегодня Пн и у меня по плану самообразование, блоггинг и новые идеи. Завтра по плану - GoJava тренинг. Вчера был день сдачи тестового задания. В среду будет день рекрутинга. Что это значит. А то, что если это день Дела-А в этом дне волноваться и делать что-либо на Тему-А, все остальное в топку - подождет. Все мессенджеры выключаются и включаются строго в определенное время, чтобы посмотреть - ничего ли по Делу-А не появилось? Все мысли-зануды вытесняются деланием Дела-А или "смешными синими штуками рядом".

Как-то так. 

суббота, 7 февраля 2015 г.

3 важные в IT "штуки" (Доклад для выпускников GoQA)

На самом деле доклад назывался 23 важные штуки, но мне нужно было уложиться не в день а в 30 минут, потому я из них выделил вначале 10 самых важных, а потом и 3. Давайте побрейстормим на тему, что самого важного в IT. Пожалуйста загадай одно-два слова/качества/навыка/знания перед тем, как пойдем дальше...


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

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


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

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

Что еще важно с людьми? С людьми стоит дружить. Что будет, если не дружить с людьми? Допустим нахамили какому-то рекрутеру. Маленькому такому, вроде бы никто и не заметит. А с этим человеком никогда больше и не пересечемся. Во что это может вылиться?.. Первый ответ в точку - он может кому-то об этом рассказать. И этого достаточно, чтобы очень скоро об этом факте узнали многие. В IT информация распостранится очень быстро. Очень-очень быстро. И ко всему нас айтишников не очень-то и много. А если брать Рекрутера (с которым надо дружить, а не хамить) - так вообще, скорость передачи информации там стремится к скорости света. Ну работа такая у девчонок. И даже, если этот человек ничего не скажет никому сегодня. Завтра его спросят в другом контексте - "а как тебе вот этот парень/барышня". Где-то в кулуарах. И в этот момент решится многое. И тебя не спросят. И не дадут второго шанса объясниться. Так что в айти все люди нужны и все люди важны...

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

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

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


Тебя, выпускника курса успокаивают, что дальше будет все замечательно. Будет, но не без твоей активной работы в этом направлении. Замечательно будет только, если будешь держать в тонусе свой мозг. Если ты постоянно будешь учиться новому. Айти - это такая штука, которая за 10 лет изменила мир до неузнаваемости. Можно только попробовать представить себе, как изменится мир, еще лет через 10. 

Кроме того сейчас вы - одна из первых групп выпускников. Завтра выпустят еще две. Потом еще две, пять, десять. Кандидатов будет становиться все больше. И это здорово, мы ведь хотим сделать Украину айтишной! 

Воспоминается цитата из Алисы в стране чудес:  «Ах, какая медлительная страна! У нас, чтобы стоять на месте, надо быстро бежать, а чтобы двигаться вперёд, надо бежать в два раза быстрее». Точно! 

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

Мне не нравится слово конкуренция, слово спарринг лучше. Это не про набить друг другу морды, а про то чтобы вместе выйти на ринг, чуть-чуть поработать вместе для того, чтобы понять где у кого какие дыры в защите. У тебя такого спарринга будет предостаточно в айти. Готовься. Тренинг, который ты прошел лишь показал тебе стартовую скорость, на которой поначалу все будет происходить в твоем кусочке айти. Эту скорость предстоит наращивать. Это твоя задача. Искать ускорения. 

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

Ну и третья "штука" по важности - она будет приходить со временем к тебе. Чем больше в айти тем чаще надо задавать себе вопрос "зачем это все", "куда я иду". 


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

Где-то на мидловой позиции у тебя будет выбор - больше "покататься на лыжах" или "выучить еще одну технологию". Любой выбор какой бы ты не сделал будет твоим лучшим решением, даже если одно другому мешает. Но если ты соберешь все свои сферы жизни и объединишь в одном направлении, то не будет или/или - какую сферу ты бы не выбрал в данный момент времени - все будет по пути. Так сделаешь больше. 

Что можно объединить? Твое хобби. Твой опыт на работе. Опыт из твоей прошлой жизни. Твой нетворкинг (тех самых людей из первого слайда). И назвать это одним "ради чего". Ведь не получится привлечь людей в свой проект банальным "ну типа денег заработаем, чё нам". тебя будут спрашивать "а ради чего ты это делаешь?". Тут очень кстати Саймон Синек вспомнился и его доклад про вдохновления людей настоящими лидерами. 

Когда ты объединишь все "штуки" вместе, то поймешь - такого другого как ты не существует в этом мире. Ты такой уникальный. Будут ребята похожие на тебя, будут те кто разделяют твою миссию, те кто не понимает ее, те кто противится изменениям, которые ты предлагаешь - но такого как ты больше не найти. 

И в этом твоя сила.

Онлайн вебинар по TDD



Что будет? Рассмотрим TDD на простеньких задачках. Как вести разработку так, чтобы быстро и надежно и без дебага. Я говорю и пишу код. Ты смотришь и задаешь вопросы.

Когда? Среда 11 февраля в 19:00 (если тема интересна, но время не подходит - зарегистрируйся и укажи этот факт - я вышлю материалы или договоримся о другой дате)

Где? В любом удобном для тебя месте с ноутом, наушниками и интернетом

Формат? Вебинар на 2 часа

Стоимость? 370 грн

Что потом? Следующий вебинар будет на тему TDD с legacy кодом

Регистрация Вот формочка, оставь свою анкетку и я с тобой свяжусь

среда, 4 февраля 2015 г.

Хочешь стать ментором?

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

ЧЁто-там 1. Отвечай на вопросы адресованные к тебе не чем-то вроде "иди погугли!", а немного более развернуто хотя-бы минут 5. Всегда есть то, что ты знаешь немного больше, чем другие. Тебе спасибо скажут за это. Потом еще обратятся и друзей приведут :) Тебе ж в свое время помогали - вот и заплати другому.

ЧЁто-там 2. Если прочитал вчера классную статью, разобрался в ней, вдохновился. Не разрывай цепочку. Кто-то ее написал для тебя, инвестировал свое время. Тебе понравилось? Вдохнови ею кого-то еще. И не в скайпе другу с "смотри какая классная статья", а на перекуре/обеде/чаепитии во время разговора с коллегами вставляя "кстаааАааати..." и дальше по той теме, что узнал. Слово Кстати - очень магическое, его можно вставлять в любом месте предложения и переключаться на новую тему. Если драйва в группе станет больше - ты победил. И пофиг, что тема совсем не кстати.. 

ЧЁто-там 3. Ты делаешь что-то, что заинтересовало кого-то из окружения? Ну например нарисовал какую-то каракулю, сам не считаешь это супер произведением, а кому-то очень понравилось. И настолько, что он это отметил. Расспроси его, почему это ему интересно. Выслушай и предложи пару дальнейших шагов, как ему разговориться на эту тему. Чтобы он нарисовал сегодня же какую-то свою Каракулю. 

ЧЁто-там 4. Видишь вот того человека? С виду скучный, хмурый, неразговорчивый. А у него внутри есть талант. Попробуй разглядеть хотя-бы в одном незнакомом человеке за день этот талант. Интересуйся - на той стороне это почувствуют и пойдут тебе на встречу. Такие штуки чувствуются издалека. В каждом есть Талантище, даже несколько. Спят только.

ЧЁто-там5. Интересуйся. Кто-то что-то сделал клевое. Тебя вдохновило? Узнай как. Попробуй. Пусть у тебя тоже получится. И потом расскажи всем, что и у тебя получилось. Что не сложно совсем. Так глядишь волна пойдет. 

ЧЁто-там 6. Сделай иначе. 100500357 раз делаешь одно и тоже, сам. Сделай сегодня чуточку иначе. Делегируй. Всего есть кому. Да понимаю, что сроки, не хочется, и т.д. и т.п. А ты делегируй. У тебя будет на одну задачу иначе и к тебе обязательно обратятся за советом, как твою задачу сделать круче всех (даже тебя).

ЧЁто-там 7. Проси о помощи. Да да, вот так. Есть идея, озвучь ее. Кто-то обязательно захочет тебя поддержать в ней. А там и поделишься своими задачами, проект с пыльной полки достанешь. И будут тебя расспрашивать про его внутренности. А ты и подскажешь. Для твоего ведь проекта все.

ЧЁто-там 8. Смотри внимательней. Каждому человеку в этом мире нужна помощь, поддержка. Абсолютно каждому. Если он об этом не говорит. Не значит что он самодостаточен. Мы люди так устроены - сами по себе не можем. Всегда есть кто-то кому помогаем и те, кто помогает. B И на вопрос "как дела" отвечать не банальным "все ок", а поделиться частичкой своих квестов. Точно так же быть готовым выслушать, или нет, даже расспросить собеседника, коль уж спросил у него "как дела" сам.

Продолжение следует... Ведь это только начало менторства, а именно подача заявки :)

вторник, 3 февраля 2015 г.

TASTE


понедельник, 2 февраля 2015 г.

Как проверить б/y ноут?

Недавно покупал себе новый старый (б/у) ноут и нафигачил вот такой вот тестлист. Так как его спрашивали уже 1 раз, значит пора публиковать в блог :)

1. Осмотреть корпус. Не должно быть трещин и сильных вмятин, особенно на углах. Иначе есть шанс, что падал. А там уже микротрещины внутри и все такое... Царапин так же не должно быть на матрице монитора. Корпус можно конечно заменить, но тогда уж и не проверишь.

2. На монике не должно быть между корпусом мусора, так же мусора не должно быть между клавишами. Над ноутом кушать можно только мне :) и то если я его куплю.

3. Осмотреть визуально все разъемы - они не должны быть расколбашены

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

5. Пройтись по кнопочкам, они по ощущениям должны все нажиматься одинаково, не срипеть и не залипать, иначе - что-то проливали, ели над ноутом. Можно аккуратно снять пробел (если умеешь) и посмотреть сколько там мусора, с позволения владельца конечно.

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

7. Если сказали, что батарея новая - надо просить гарантийку. Иначе у тебя старая батарея. Если батарея старая - надо ее полностью разрядить (отключить от питания) во время тестинга, а потом продолжить тестить но уже с зарядкой, и снова разрядить. Так грубо можно прикинуть сколько она живет. За одно и блок питания.

8. Монитор я проверяю в пеинте на 6 цветах. Черный, белый, зеленый, красный, синий и серый. На всех цветах ищу битые пиксели. Не страшно, если пиксель один потух везде или в каких-то цветах. Страшнее, если потухло скопление пикселей - значит скоро будет их там больше. Еще раздражает пиксель-стахановец, который горит всегда белым. Это эстетика. У меня было два черных пикселя - почти не заметно, я забил. Решать тебе.

9. Проверить что памяти столько, сколько заявлено. Может быть бага с 32битной системой, тогда памяти будет не много. Но в настройках должно быть написано сколько доступно. По хорошему надо подготовить диск с 64 битной операционкой и там чтобы были все необходимые тесты: памяти, винта и так далее и с него грузиться (или с флешки)

10. Проверить что винт заявленной емкости. 

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

12. Пока работает комп винт не должен издавать страшных звуков. 

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

14. Проверить картридер флешкой (заготовленной заранее), пусть тоже пишет файл :) Как чтение так и заись. 

15. Установить скайп, проверить микрофон позвонив на tastcall. Так же и наушники. Как внешние так и штекера. Штекера при этом можно акуратно поюзать влево-вправо при этом звук не должен пропадать, не должно быть шершения хрипения как в наушниках так и в записи скайпом тестового звонка. Звук проверять тихим, громким голосом на разном удалении "раз-два-три", "раз-два-три"

16. Проверить вебкамеру в настройках скайпа, работает ли. Горит ли лампочка Rec во время съемки. 

17. Покдлючить переносной usb3 винт ко всем штекерам usb. Переписывать ранее заготовленный большой файл. Нас интересует скорость работы usb3 и usb2. Разница должна быть ощутимой. usb3 50Mbyte/s (кажется так)

18. Посмотреть сколько ядер у процика, соответствует ли заявленному

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

20. Проверить громкость звука на макимуме на минимуме. 

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

22. Зайти на вкладку драйверов - все должно быть установлено без ошибок, никаких неустановленных дивайсов быть не должно..

23. Проверить все клавиши с шифтом и без, с контролом и без, с альтом и без (последние две можно не все) Проверить все функциональные клавиши.  

24. Провериить с помощью тулы, которая дает инфу о системе (aida64) сколько винда работает часов, когда ее переустанавливали. Так можно проверить (не всегда) говорит ли правду продавец, сколько комп юзался и как. Когда что либо спрашиваем у продавца смотрим к нему в его честные глаза, ловим малейшие почухивания носа, ушей, отвод глаз. Если нечего скрывать, скажет прямо. Если есть - уйдет от ответа, намекая на то, что надо потестить.

25. Чтобы влацельцу небыло скучно я развлекал его байками тренерскими и рассказывал что делаю. Потом разговорились, оказывается классный мужик вообще. 2,5 часа я тестил его ноут. об этом стоит договориться заранее. 

26. Так же заранее стоит договориться, что ты берешь ноут на испытательный срок до недели и попробуешь. Если что не так - вернешь обратно. Он должен дать тебе отсканить какой-то док, или попроси его написать расписку. Хоть что-то. Мой продавец был честный и я даже в доки его не смотрел. Поверил на слово. Ты не верь :)

27. Проверь насколько сильно греется ноут и не вырубается ли он от перегрева, если стоит на плоском столу. 

28. Слышно ли кулер? Много ли там пыли визуально? 

29. Есть ли зярядка? В каком она состоянии? 

30. Надо проверить так же как читается и записывается CD и DVD диск. 

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

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

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

34. Так же стоит проверить hdmi и vga выходы. Короче все, что втыкается - надо проверять вначале на раздолбанность, потом на работостпособность и надежность контакта. 

Но даже это все не гарантирует что все будет ок. Я приехал домой, переустановил винду и комп стал перегружаться каждые 2 часа. Винда битая скорее всего, убунту работает ок. Я лишь к тому, что неделя испытательного срока важна. Договаривайся сразу по телефону, нечего тратить даже время, если человек не согласен. Предупреди его как долго будешь тестить и что будешь тестить основательно. Можно так же у него расспросить кое-какие вопросы по телефону: как юзался, не падал ли, что с кнопками, матрицей. А то если у тебя критично, чтобы он не жужжал кулером, то сразу это и спрашивай. Сразу проверяй то, что если fail - то точно не берешь и лучше еще по телефону. 

Ну и покупка должна быть такой, чтобы ты мог накинуть на него 1000-2000 грн и быть уверенным, что у тебя его за месяц купят. Тогда точно хорошая покупка! Ах да, выбирая ноут обязательно потрогай его у кого-то у друзей если такое есть. Сейчас мне лично кажется что начинка уходит на второй план (для офиса) и играет роль эргономика. Мне мой очень нравится. Няшный. Кнопочки. Размерчик. 14 дюймов, без допклавиатуры. 

Вот как бы и все :)

А нет, ноут надо протереть дома спиртовой салфеткой, а то мало ли :) баги....

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

Надеюсь пост помог. 

Что стоит сделать, чтобы подтянуть JavaCore?

Какой путь предстоит пройти, чтобы стать Junior Java Developer в одной большой (или не очень) компании я попробую сейчас уместить в один этот пост. Каждый абзац его - один этап, и если ты он тебе покажется пройденным - смело переходи к следующему. Тут все зависит от того, какой у тебя сейчас уровень. И вовсе не страшно, если этот уровень сейчас не такой высокий, как хотелось бы - если будешь вкладывать ежедневно в практику, очень скоро все догонишь. Начну с самого начала. 

Допустим опыт у тебя отсутствует, как по Java так и по программированию. Помнишь лишь только, что когда-то давно уроки информатики тебя привлекали у тебя были по ней неплохие отметки. В таком случае тебе стоит разобраться с основами написания программ. Для этих целей подойдет хороший проект http://scratch.mit.edu/ Тебе надо разобраться с тем как большая задача декомпозируется (разбивается) на этапы, те в свою очередь состоят из кирпичиков-команд. Компьютер умеет делать много всяких команд, а программист объединяет их в программы используя такие штуки как например: ветвления, циклы, процедуры, простые ячейки памяти и массивы для хранения промежуточных результатов выполнения программы, используя всевозможные алгоритмы. Это все не сложно, но java я пока бы рекомендовал отложить. На время. Когда разберешься с основными штуками, которые обычно делает программист приступай к следующему этапу. Если вдруг эта игра не подойдет - вот еще одна классная подборка

Ты уже программировал в прошлом на каком либо языке программирования в прошлом или быть может программируешь сейчас. Задачи могут быть как простые - использование компьютера в качестве калькулятора или по-сложнее - автоматизация каких-то рутинных задач. Ты пишешь программы для себя, чтобы сэкономить время, а компьютер тебе в этом помогает. Для проверки: ты уже знаешь, что такое алгоритм, ветвления, цикл, ячейка памяти, процедура, сортировка. Тут смело можно включать язык Java в твой арсенал. В сети по языку java есть множество материалов: видеоуроки, книги, статьи. Но одного знания не достаточно - надо иметь площадку для экспериментов. Такой себе задачник, где собрано много мелких задачек, которые ты будешь решать. Например http://codingbat.com/java или вот http://codeforces.ru/problemset  или еще 100500 других вариантов, которые гуглятся просто "задачи по java с решениями". Так же тебе потребуется какая-то книга, которую ты купишь и будешь читать - твоя настольная книга. Их есть несколько - каждому подходит какая-то своя:

Так же ты сможешь найти множество видеоуроков на тему основ Java, как например:
Но основное тут - это практика, ведь без нее теория "в одно ухо влетело, в другое вылетело". Практики должно быть много. Очень много. Каждый день по 4+ часов. 2-3-4 месяца (как пойдет) зависит от твоей скорости. 
Так же тут стоит задумываться о качестве твоего кода, и в этом тебе помогут:
Тут уже можешь заняться тем, чтобы тестировать свои познания о java с помощью какого-то мокового экзамена scjp. Вот например этого (конкретно в этом тебе надо будет зарегаться, чтобы потом получить расшифровку твоих неправильных ответов). Их в сети есть много. Очень много. Как все с java. Пройди тест в начале пути и проходи его каждую неделю, наблюдая за тем, как % растет. Дойдешь до 90% - это очень и очень хорошо. Есть книга, которая хорошо готовит к сдаче этого экзамена "OCJP Sun Certified Programmer for Java 6 Exam 310-065". Экзамен тебе нужен не для того, чтобы получить сертификат (не уверен что он тебе сильно поможет устроиться), но для того, чтобы знать где именно у тебя пробелы. 

Следующая важная штука - ООП. Без нее в java никуда. Частично это покрыто в java core литературе, но опять же - одного знания что такое полиморфизм, икапсуляция, наследование и абстракция недостаточно. Надо чувствовать его. А тут без практики, на которой будут грабли - никуда. Тебе предстоит перейти от мышления в процедурном стиле в мышление в стиле ООП. Для этого потребуется отойти от алгоритмических задачек в сторону более сложных задач по моделированию части реального мира. Например: смоделировать университет со всеми его ключевыми ролями, их взаимодействиями, документооборотом, составлением расписаний, деканата и прочих артефактов. Или пиццерию, со всеми-всеми ее обитателями. Или аэропорт. Или библиотеку. Или.... Выбирать тебе. Как выбрать задачу и ментора себе и в каком направлении тут двигаться можно почитать в этом посте. Книги для понимания ООП я бы рекомендовал такие:
И опять же - много практики. Привыкай к тому, что кодить будешь целый день - это будет твоя основная задача. 

Отдельно хочу сказать про английский язык. Книги и материалы я тебе предложил на русском, потому как допускаю, что с английским ты сейчас не очень дружишь. Если это так - записывайся на курсы уже сегодня и проходи его шаг за шагом. Ты должен будешь:
  • гуглить решения на английском - 70%
  • участвовать в переписке с англоязычной частью твоей команды, писать документацию по проекту - 20%
  • пройти собеседование на английском, общаться минимум раз в неделю с "заказчиком" - 10%
Это в любом случае придется сделать. Начинай сегодня же. 

Следующий этап - технологии из стека j2ee, всевозможные opensource фреймворки и прочие прибамбасы, которые уже придумали для тебя - тебе остается их скрутить вместе. Движение на этом этапе рекомендую проводить в направлении:
  • Java Web basics: Servlets, JSP, HTML5, CSS3 - преврати свой консольный проект в полноценный Web. 
  • DB/SQL - храни данные в базе.
  • JavaEE basics: Maven3, XML/JSON, Spring IoC, Hibernate, Struts2 или SpringMVC - сделай полноценное EE приложение 
  • WebServices/Rest/SOAP - дай доступ к своему api для других служб
  • JavaScript (jQuery), AJAX, JSF  - сделай свое приложение SPA, как сейчас принято в мире Web
Тут важно понимание принципов работы технологий и фреймворков. Но это не все. 

Очень важно тут нарабатывать правильные девелоперские навыки:
  • Декомпозиция большой задачи на мелкие. Большую задачу не нашинковав ее на мелкие не решить. 
  • Доведение задачи до состояния - готово, преодолевая все-все препятствия (а их будет много), постоянное чувство "приехали" - его надо преодолевать, ведь решение где-то есть, может рядом, а может тебя от них отделяет еще 20 неудачных попыток. Не сдаваться!
  • Быстро гугление ответов на свои собственные вопросы - тут книги уже не помогут, хотя они и есть - на чтение их всех уйдет оОоочень много времени, и не эффективно это. Технологии меняются, одни фреймворки приходят на смену другим. Один проект использует один набор технологий, другой - другой. Надо знать базу и уметь догугливать все остальное. 
  • Работа в команде: общий репозиторий, работа на стыке с коллегами, конвенции в команде, коммуникации и многое другое, что не передашь в рассказах, видеолекциях, книгах, а если и передаешь - понятно не будет. Тут надо окунуться с головой в командную разработку.
  • Работа по процессу, навыки планирования
  • Стрессоустойчивость
К сожалению про эти навыки не прочитать в какой-то одной книге - тут надо вливаться в команду и впитывать все, что она тебе дает. Скорее всего этот тренинг ты уже будешь проходить стажируясь в какой-то компании, либо проходя тренинг такой как у нас, в GoIT. Мы вкладываем в твои навыки больше, чем просто делимся знаниями, потому, что знаем - при правильном наборе навыков знания очень скоро ты впитаешь сам. 

В завершение хотелось бы поделиться докладом Якова Файна Становясь профессиональным Java Developer

Книгой, которая поможет на собеседовании для будущего j2ee разработчика "Java/J2EE Job Interview Companion" автора Arulkumaran Kumaraswamipillai - очень емкая и классная подборка вопросов о core java, oop и j2ee технологиях. 

Я уверен, пройдя этот путь ты точно будешь работать в компании. Тут важно понимать, что знание этого всего автоматически не означает твое трудоустройство. Устроишься ты, если будешь стучаться в компании:
  • Создаешь свое резюме
  • Изучишь вакансии размещаемые на сайтах компаний в разделе "Вакансии"
  • Будешь ходить на собеседование 
  • И одно из них пройдешь!
Все получится. Но придется хорошенько потрудиться...

А что будет дальше можно увидеть в моем докладе У тебя получится.