пятница, 30 сентября 2016 г.

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

Как много можно узнать, "заглянув в будущее"?
Можно, например, узнать, что есть такая функция, как strlen(), которая поможет мне точно и без лишних заморочек ответить на вопрос, сколько элементов в массиве символов.
Осталось только разобраться, что там происходит с символом конца строки (учитывается ли он при подсчёте или нет), и можно сказать, что ещё один шаг в решении задачи пройден.
Ура, что ли? ))

До        После

Учимся

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

Краткий отчёт по учёбе:
По языку C - последняя лекция оказалась сложной. Было много новой информации, вызвавшей много новых вопросов, и мало времени над всем этим подумать. Нужно будет повторить её ещё раз.
По английскому языку - продолжаем изучать способы образования прилагательных. Здесь по-прежнему пока всё идёт ровно и без особого напряжения.
Книжка по программированию - "завяз" в районе 300-х страниц. Автор начал приводить много примеров на языке Паскаль. Приходится разбираться и прикидывать, как всё это могло быть сделано на языке C. Что интересно, некоторые из примеров в книге можно использовать для решения моей злополучной тестовой задачи, но только на языке Паскаль, т.к. в языке C таких команд нет. ))

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

До        После

четверг, 29 сентября 2016 г.

Ещё раз на те же грабли

Несмотря на то, что я два дня назад "попрощался" с тестовой задачей до лучших времён, вчера вечером снова за неё взялся. На этот раз решил передавать треугольное число в функцию main() в качестве символьного параметра (второго в скобках):
int main (int argc, char * argv)
"Бился" над этим способом до 00:00 часов. "Разбился" о непонимание  того, как подсчитать в переданном массиве символов число его элементов. Наугад попробовал разными методами через sizeof и деление, но ничего не вышло. Либо компилятор выдавал ошибку, либо  программа считала, что есть только один элемент в переданном массиве символов.

Итог "битвы" такой: 2:0 - в пользу задачи, плюс пропущенные по одному уроку программирования на C и английского языка. ))
На выходных придётся снова поднажать с учёбой.

Ещё сегодня полазил по сайту "Лаборатории Касперского". У них, оказывается, есть интернатура (стажировка) для студентов 3 - 4 курсов. Очень расстроился, когда узнал, что это работает только в г.Москве и у меня не получится курсе на 3 - 4 постажироваться удалённо.
Ну, ничего. Думаю, через пару-тройку лет обязательно найду себе место для стажировки.

До        После

среда, 28 сентября 2016 г.

Идём дальше

Итак, первое фиаско позади. Идём дальше.
От "медленного" курса по C осталась одна лекция и начнём изучать "быстрый" курс по C.
По английскому сейчас изучаем местоимения и читаем детские стишки для отработки правильности чтения.

Вчера мне позвонил одноклассник с необычной просьбой. Ему пришёл из Китая новый смартфон и он не может установить в него сим-карту. Точнее, её есть куда вставить, но смартфон её не "видит". Попросил меня помочь. ))
В чём вопрос? Что не сделаешь для лучшего друга? Привози!
Поглядим, что там за чудо китайской техники такое, в которое сим-карту можно вставить как-то неправильно. )) Заодно угощу товарища домашним салом (много его что-то скопилось).

Ещё "новость" в тему смартфонов: в день выхода iphone 7  у жены сломался старенький iphone 4S (не работает wi-fi). Вот, теряюсь в догадках, что это может быть: желание жены купить новый iphone, желание Apple, чтобы моя жена купила новый iphone или всё-таки желание iphone 4S уйти "на покой"?
Моя Королева вроде как вне подозрений, так как новый смартфон она хочет не от Apple.
Для Apple такие "шутки" nj;t вроде как не совсем характерны и мелковаты. Раньше за ними такой прямолинейности не замечал. В основном, с выходом каждого обновления iOS iphone 4S просто начинал больше тормозить. В итоге, к последнему обновлению от той скорости работы, из-за которой он в своё время покупался, осталась только "тень отца Гамлета" (сплошные "тормоза"). ))

Сейчас много читаю в Интернете статей и новостей на тему IT и пополняю по ссылкам из них свою коллекцию книг. Когда я всё это буду читать? Ничего, прорвёмся. У нас, ведь, ещё "1000 лет на Земле". )) Возможно, какие-то из книг войдут в мой так называемый "долг знаний".

До        После

вторник, 27 сентября 2016 г.

Фиаско №1

Почему №1? Потому что уверен, что их будет ещё очень много. ))

Вчера вечером занялся решением первой тестовой задачи на продвинутых (углублённых) курсах программирования на C. Задание было такое: написать программу, которая находит номер введенного целого положительного треугольного числа в диапазоне от 1 до 9'223'372'036'854'775'807.

Написал целых три программы.
Как решал:
1. Определил, что числа в диапазоне от 1 в 9'223'372'036'854'775'807 входят в множество long long int чисел.
2. Поверхностно изучил функции scanf() и sqrt().
3. Поверхностно изучил операторы цикла for, while и ветвления if - else.
4. Почитал, что такое треугольные числа и как они рассчитываются.
5. Написал первую программу, которая в цикле while требовала ввести правильное треугольное число, проверяла его на соответствие диапазону исходных данных и вычисляло его номер.
6. Подумав, решил от цикла while отказаться - его, ведь, не было в условиях задачи. Написал программу без цикла, с диалогами на английском:

#include <stdio.h>
#include <math.h>

void checkNumber (const long long int * const ptr)
{
     int n = (sqrt(1+8* (*ptr))-1)/2;

     if (*ptr > 0 && *ptr <= 9223372036854775807 && (n%1) == 0 && (n*(n+1)/2) == *ptr)
        {
          printf ("The number of this triangular number is: %d\n", n);
        }  else
        {
          printf ("It's not valid number.\n");
        }

      return;
}

int main (void)
{
     long long int triangularNumber;
     long long int *triangularNumberPtr = &triangularNumber;
     printf ("Input positive triangular number: ");
     scanf ("%lli", &triangularNumber);
     checkNumber (triangularNumberPtr);

     return 0;
}

Использовал в программе указатели, чтоб было вроде как "правильнее".
7. Отправил программу на проверку и дальше третьего теста она не прошла.
Уж не помню, какие там ошибки автотест выдавал, но смысл был в том, что диалоги в программе не нужны.
8. Убрал диалоги, указатели и прочие "красивости":

#include <stdio.h>
#include <math.h>

int main (void)
{
     long long int tn;

     scanf ("%lli", &tn);
     long double n = (sqrt(1+8*tn)-1)/2;

     if (tn > 0 && tn <= 9223372036854775807 && (n*(n+1)/2) == tn) 
    {
         printf ("%Lg\n", n);
    }

      return 0;

}

Для переменной n использовал тип long double, так как дальше 5 теста пройти не смог, а в комментариях к задаче другие программисты написали, что тесты не проходит в том числе если тип этой переменной будет не long double. Короче, сделал сам точно не знаю, что и программа всё равно в тестах далеко не ушла.

В консоли работает нормально, если вводить в неё более-менее нормальные данные. Такие "числа" как 1.5,  21/5, 41,5, 23a программа принимает как валидные и первые цифры таких чисел (1, 21, 41, 23) определяет для себя как введенное число, которое нужно проверить на "треугольность" и вычислить его номер.

Погуглил на тему проверки валидности вводимых данных, но все решения были или на непонятном мне C++ или представляли собой тупой посимвольный перебор по алфавиту.

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

В связи с этим немного удивляет содержание той части курса "углублённого" программирования на C, которая предшествовала задаче (массивы, указатели и организация работы с памятью).

Ситуация очень напоминает оставленную кем-то в комментариях к задаче шутку:
"Обожаю наши методички по лабам C++!
Это винтик, это отвертка, винтик можно крутить отверткой. Это всякие железяки, их можно соединять винтиками, закрутив отверткой. Еще бывают гайки и шестеренки.
Задание: Постройте синхрофазотрон".

Ну, что ж, изучать мне ещё "методички" и изучать.))

Развлекусь пока созерцанием скриншота своего рабочего стола:



До        После

понедельник, 26 сентября 2016 г.

Традиция

Последние выходные традиционно прошли в стиле "интенсив". ))
Спорт, учёба, вывоз с дачи тёщи с сельхозпродукцией, учёба, спорт, учёба.
Прошёл первый блок уроков углублённого программирования на C и остановился на первом же тестовом задании. С теорией "продвинутого" курса было всё более-менее понятно: новое знание не опиралось на какие-то положения, которые не были ещё мной изучены на "медленном" курсе программирования на языке C. А вот, тестовая задача предполагала как раз наличие таких знаний (циклы, ветвления). Поэтому пришлось приостановить изучение "продвинутого" курса и в ускоренном режиме продолжить изучение "медленного" курса.
В субботу "терзал" массивы и указатели. В воскресенье изучал циклы и ветвления.

Мне кажется, что, единственным достоинством "медленного" курса по программированию на языке C является низкий "порог вхождения" - подробно объясняется, как и с чего начать. Возможно, после того, как этот "порог" был пройден, мне нужно было переходить на "быстрый" курс. Уже, глядишь и прошёл бы все необходимые операторы.
Ну, ничего.  От "медленного" курса осталось всего два урока и начну проходить "быстрые" курсы с более академическим подходом в преподавании. Начну сначала. Заодно, повторю уже пройденное на "медленных" курсах. ))

Сегодня попробую написать тестовую программу из продвинутого курса. Посмотрим, что у меня получится, и, сколько это займёт времени.))
Сильно торопиться не буду, так как, в любом случае, продвинутый курс начался 23 августа, а я к нему присоединился только 23 сентября. Хотя, мой азарт может победить здравый смысл и заставить вступить в "соревнование" с самим собой. ))

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

В первом томе книги А.В. Столярова "Программирование: введение в профессию" я уже где-то в районе 280 - 300 страницы. В этом месте в книге автор рассказывает про язык программирования Паскаль, приводит примеры решения на нём некоторых задач. Синтаксис этого языка я не стараюсь запомнить наизусть. Мне достаточно простого понимания того, что делает написанная на нём программа. До Паскаля автор кратко прошёлся по основным командам bash и клавиатурным сочетаниям текстовых редакторов vim и nano. 
Ещё раз повторюсь, книга очень интересная и информативная и, в отличие от книги Дж.Сомнеза "Путь программиста", полностью соответствует своему названию.

По итогам результатов своих экспериментов с Window Managers, я решил пока что оставить себе Openbox. В нём достаточно много работы для клавиатуры и есть возможность в случае чего "пощёлкать" мышкой.  Теперь мой рабочий стол выглядит пустой экран с курсором - ни обоев, ни иконок, ни панелек, ни виджетов. Осталось только настроить запуск терминала одной кнопкой. Займусь этим после того, как напишу тестовую программу для продвинутых курсов по C.
В качестве менеджера файлов поставил gnome commander. В нём также можно работать с клавиатуры или мышкой. Понравилось, что в  gnome commander для файлов можно открывать контекстное меню ("открыть с помощью" и другие подобные функции) и переименовывать файлы привычным нажатием клавиши "F2".
Как-нибудь выложу здесь снимок рабочего стола.

До        После

пятница, 23 сентября 2016 г.

Про обучение

Вчера решил залезть на страничку автора курса по программированию на C. Нашёл там кучу ссылок на другие курсы. Некоторые из них мне очень понравились. Хочу изучить все. Собственно, вопрос: где взять ещё времени для учёбы? Думаю, человек, который изобретёт способ сознательно учиться во сне, станет очень богатым. Хотя, богатство его будет основано, скорее, не на связанной с таким способом технологией обучения, а на развлекательных технологиях.

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

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

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

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

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

 Но всё это "лирика". Учёба у меня идёт по плану. Вчера на уроке по C по верхушкам прошли массивы. Осталось 4 лекции и нужно поскорее переходить на более академический курс.
Параллельно с этим планирую начать "углублённые" курсы по C.

На английском всё ещё изучаем грамматику.

Попробовал оконный менеджер awesome. Интересная и быстрая штука. Только непривычны клавиатурные сочетания (все завязаны на кнопку "Super" или "Windows") и не нравится, что нельзя просто взять и изменить размер окна мышкой. )) Думаю, это просто дело привычки.
Сегодня планирую попробовать dwm и ещё парочку других.

До        После

четверг, 22 сентября 2016 г.

Ускоряемся

Ведущая на курсах английского языка заметно ускорила скорость своей речи (особенно ближе к концу урока). Теперь приходится поднапрячься, чтобы успеть произнести какую-нибудь фразу до неё.
Немного настораживает способ обучения английскому. В первые со школы вижу такую методику, когда сначала изучаем алфавит, затем - звуки, после - правила построения предложений и формирования глаголов и существительных, а сами слова не учим и фразы из них самостоятельно не строим. Обычно всегда стараются параллельно учить слова и правила их складывания в предложения.
Ладно, посмотрим, что будет дальше. Может быть буду учить слова отдельно.

По языку C вчера прошли одну лекцию по массивам. Сегодня будет ещё одна. Автор стал снимать свои уроки в ОС Ubuntu. Подсмотрел у него в консоли разноцветные названия имени пользователя и хоста в терминале. Мне показалось очень удобным, когда служебная "статическая" информация отделена цветом от вводимой в терминал и выводимой в терминале "динамической" информации (мои команды, вывод программ и т.п.). Немного погуглил и сделал себе так же. Теперь у меня в терминале тоже всё красиво и удобно. Примерно вот так:



Попробовал несколько Window Manager-ов Linux: IceWm, fwm, fluxbox, WindowMaker. Не понравилось в них то, что нужно потратить много времени на настройку под себя (чтобы всё нужное было под рукой и не было ничего лишнего). Плюс, в некоторых WM есть такие неприятные "мелочи", как неработающее переключение раскладок клавиатуры, некорректная работа окон в некоторых программах (отсутствие прокрутки) и т.п.
Что понравилось в лёгких WM: скорость работы - почти мгновенный отклик на любое действие.
Решил, что пока у меня нет лишнего времени, чтобы тратить его на тщательную настройку WM, попробую ещё пару WM и если ничего не подберу подходящего, то вернусь на Unity.
Да, и ещё хочу попробовать пару фреймовых оконных менеджеров. Уж очень они хардкорно выглядят.))

До        После

среда, 21 сентября 2016 г.

ТЗ

Вчера пропустил урок по английскому языку. Беда, печаль. Но мы это исправим на выходных.

На уроке по языку C прошли указатели. Автор курса 2,5 часа путано, сбивчиво, обрывая одну мысль и переходя на другую, многократно повторяя то, о чём уже сказал не один раз, рассказывал то, что можно было бы донести до нас максимум за 30 минут. Урок автор закончил примерно такими словами: "Что такое указатели мы с вами разобрались. А для чего они нужны, мы будем разбираться позднее".
Тема следующего урока - массивы... В темах последующих уроков также ничего про указатели не сказано. Получается, что когда через много-много уроков мы опять вернёмся к указателям, автор выдаст нам новую версию своей путанной и сбивчивой лекции на 2,5 часа? ))
Но я не сильно переживаю по этому поводу. Есть ещё "быстрый" курс по языку C, в котором указателям посвящена отдельная лекция, и замечательная книжка по программированию, в которой автор также пообещал посвятить много времени указателям. Так что никуда указатели не денутся. ))

В книге по программированию прочитал, что для того, чтобы стать программистом, нужно обязательно придумать себе какое-нибудь тех-задание на разработку ПО и выполнить его.
Ну, что ж. Я придумал себе целых три:
1) Программа, которая будет уведомлять меня о появлении изменений (новых публикаций) на сайтах (отдельных страницах этих сайтов), у которых нет рассылки новостей. Допускаю, что такая программа (и не одна) уже есть, но мне нужен свой "велосипед".
2) Программа, которая будет на сканированные изображения документов наносить отметку о том, что копия документа является заверенной (с текущей датой, должностью, Ф.И.О. и подписью). Попробую изобрести свой Water Mark.
3) Программа для видео-наблюдения, включающая запись изображения только при изменении картинки, получаемой от камеры.

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

А ещё сегодня по дороге на работу чуть не наступил на живого богомола. Раньше я их в живую никогда не видел и думал, что они у нас не водятся. Вот так: век живи - век под ноги смотри. ))

До        После

вторник, 20 сентября 2016 г.

Без сюрпризов

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

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

Пару недель назад прочитал статью Прокопова Никиты "Голые короли IT" и стал лучше понимать, что за "разброд и шатания" творятся в IT.
До этого просто недоумевал, почему на рынке труда так много вакансий для специалистов в тех областях и технологиях IT, которые, судя по категоричным высказываниям блогеров и подкастеров, устарели, громоздки, неудобны и вообще давно "умерли". Оказывается, всё просто: на технологии и специализированное ПО тоже есть мода. ))
Осознав  это, вздохнул свободнее: можно больше не метаться в поисках самой востребованной технологии, чтобы уж наверняка найти работу по будущей специальности, а просто изучать программирование.

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

Приобрёл несколько рекомендованных сообществом IT книг. Жаль, что нельзя читать во сне. Ведь так много нового хочется узнать. Ничего. Вода камень точит. Буду читать каждый день минимум по часу и рано или поздно все книжки будут прочитаны. ))

До        После

понедельник, 19 сентября 2016 г.

Новая книга

Вчера, когда выбирал новую связанную с программированием книгу для ежедневного чтения, вспомнил, что полтора года назад читал "Программирование на языке ассемблера NASM для ОС Unix" А.В. Столярова. Это была единственная книга, по которой я смог изучить и понять основы ассемблера. Даже умудрился получить сертификат об этом:
Вот и в этот раз подумал: а что если у этого же автора есть не менее толковая книга по языку C.
И почти угадал. Автор, действительно, думал написать такую книгу, но решил пойти ещё дальше и выпустить четырёхтомник "Программирование: введение в профессию", который был задуман как сборник основных сведений, нужных, чтобы самостоятельно освоить программирование с использованием операционных систем семейства Unix.
По задумке автора:
"...книга должна охватить этапы изучения программирования в объёме «продвинутой» школьной информатики (в той её части, которая непосредственно касается программирования) и первых двух курсов ВМК МГУ, с учётом использования операционной среды ОС Unix. В книгу войдёт (в сильно переработанном виде) материал, ранее использованный в книгах Операционная среда ОС UNIX для изучающих программирование, Программирование на языке ассемблера NASM для ОС Unix, Введение в операционные системы и Введение в язык Си++, что составит, по ощущениям, около половины объёма будущей книги. С нуля придётся написать, во-первых, главу, посвящённую математическим основам программирования — теории алгоритмов и её связи с теорией вычислимости; во-вторых, полностью с нуля будет создана часть, посвящённая начальному освоению программирования на примере языка Паскаль, а также сравнительно небольшая, но необходимая часть, посвящённая языку Си. Если хватит сил, стоит снабдить книгу также частями, посвящёнными Лиспу и Прологу".
К данному моменту уже вышли в свет первые два тома сборника.
Что интересно, автор  пишет книги на полученные от будущих читателей пожертвования и принципиально не хочет заключать договоры с издательствами, чтобы иметь возможность распространять свои произведения в электронном виде бесплатно.
Действительно, на сайте автора совершенно бесплатно, без регистрации и необходимости просмотра рекламы )) доступны для скачивания все написанные им книги.
Если успею, надо будет поучаствовать в финансировании третьего и четвертого томов "Программирование: введение в профессию", тем более, что в обмен на это автор предлагает такие подарки, как:
- указание имени жертвователя в книге;
- отправку жертвователю одного или нескольких томов книги (в зависимости от суммы пожертвования) в бумажном виде с автографами автора.
Более подробную информацию о пожертвованиях и подарках можно почитать на сайте автора.

Первые два тома этой книги я себе уже скачал и начал изучать. За воскресенье успел прочитать что-то около 100 страниц (с перерывами на курсы по английскому языку и языку C). Из того, что понравилось: автор начал введение в профессию с самых основ и обучает программированию с помощью инструментов, которые предоставляют Unix-подобные ОС. Использование удобных бесплатных инструментов при обучении - это очень хорошая идея.

Кстати, по ОС Unix и ОС Linux у меня тоже есть сертификаты )):
 
Понимаю, что хвастаться тут нечем, т.к. приведённые сертификаты - это не ахти какой показатель, но, по крайней мере, не смотрю на ОС Linux, как на "новые ворота".

Кстати, о "птичках". Думаю, что когда буду изучать учебные дисциплины, нужно будет в качестве проверки знаний по ним перед сессией тоже сдавать экзамены на сертификаты.

До        После

воскресенье, 18 сентября 2016 г.

Интенсивные выходные

Выходные идут на повышенных оборотах.

Суббота: 
- урок английского;
- урок по программированию на C;
- 1 час чтения книги;
- поиск хитрого сетевого зарядного устройства для планшета свояка ("ты ж будущий программист, помоги найт!" ));
- настройка ПО на компьютере на работе у сестры;
- доставка тёщи на дачу;
- доставка провианта с дачи домой тёще;
- чтение книги;
- 2 серии "Человека в железном замке" (не смог устоять).

Воскресенье:
Закончил читать книгу Дж.Сомнеза "Путь программиста".
Что могу про неё сказать? 2/3 книги с опытом программиста вообще никак не связаны и представляют собой описание бытового жизненного опыта автора в стиле мемуаров. Более правильным названием для книги было бы "Как я вышел на пенсию в 33 года". Тем более, что эта фраза несколько раз повторяется автором на протяжении всей книги. 
На пенсию в 33 года автор вышел благодаря жестокой экономии и удачному вложению денег в недвижимость.
Чего-то нового и полезного для себя я в этой книге не увидел. Перенять опыт автора в наших условиях не получится, т.к. проценты по ипотечным кредитам в нашем городе в 1,5 - 2 раза превышают доход, который можно получить от сдачи недвижимости в аренду (это, если покупать недвижимость как Дж. Сомнез - "под ипотеку" при уплате 10% первоначального взноса).
Всё остальное, что Дж. Сомнез рассказывает про управление семейным бюджетом, питание, здоровье и т.п. не является для меня новостью уже наверное лет 15 - 18 ))
Несколько наивные рассуждения Сомнеза о функционировании банковской системы США ничего, кроме снисходительной улыбки не вызвали.
Кому можно порекомендовать эту книгу? Наверное только очень молодым людям, у которых нет доступа к Интернету. И то с оговоркой - не принимать изложенное в книге как истину в последней инстанции.

На курсах английского языка прошли уже 6 уроков. От правил чтения буквосочетаний перешли к правилам чтения предложений.

На курсах программирования на языке C изучили типы данных char, short и int  и особенности  их применения. Поигрались с функцией printf() и её маркерами. Прошёл уже 11 уроков из этого курса.
Кто-то может сказать, что 11 уроков продолжительностью от 0,5 до 2,5 часов каждый - это слишком много для того объёма информации, который я на них смог получить. Но я специально оставил "быстрые" ("сжатые") курсы на потом. Во-первых, автор "медленного" курса очень подробно разъясняет самые основы языка C и рассказывает такие нюансы, которых не услышишь на "быстрых" курсах. Во-вторых, как я уже писал ранее, на "медленном" курсе очень низкий "порог вхождения" и после его прослушивания я буду более-менее готов приступить к "быстрым" курсам. В-третьих, автор "медленного" курса записал всего 20 уроков, половину из которых я уже изучил, и скоро смогу перейти к "быстрым" курсам.

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

А ещё мне нужно выбрать из примерно 20 книг, какую читать следующей. ))

До        После

пятница, 16 сентября 2016 г.

Всё идёт по плану

Вчера на курсах по языку C изучали сниппеты в текстовом редакторе SublimeText. Вещь удобная и полезная, но для меня как новичка - преждевременная.
Думаю, правильнее будет сначала научиться код самому ручками писать, а потом уже использовать инструменты, которые будут писать за меня.

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

У планировщика kanbanflow выявилась ещё одна неприятная черта. Я назвал её "синдром надсмотрщика". ))
Если к обозначенному в плане времени я не перетащил задачу в колонку "в процессе" или "завершено", он выделяет задачу красным цветом и шлёт мне на электронную почту письмо о том, что я пропустил выполнение задачи.
Получается, что кроме учёбы я должен параллельно контролировать, который сейчас час, и ещё думать о том, что в определённое время мне придётся подняться со своего уютного дивана (кресла, коврика для йоги), чтобы дотянуться до монитора и совершить в kanbanflow какие-то чисто механические и ненужные мне действия, как о чём-то жизненно необходимом (иначе зачем меня об этом так настойчиво уведомляют).
Таким образом программный планировщик:
1) вносит в процесс моего обучения раздражающий фактор. Мне, наверное, лучше знать, выполнил я задачу или нет и когда у меня есть возможность приступить к её выполнению;
2) засоряет мой электронный почтовый ящик;
3) превращает процесс моего обучения из удовольствия в обязанность.

Возможно, что kanbanflow - это всё-таки не то, что мне нужно. Думаю, мне стоит вернуться к старому доброму "настольному календарю" - составить своё расписание в простом текстовом документе в google docs. ))

До        После

четверг, 15 сентября 2016 г.

Расписание занятий

Пришло время распланировать свои занятия.

За время своей юридической карьеры я испробовал разные планировщики задач. Большинство из них отнимает слишком много времени на слишком подробное планирование задач. Так, например, чтобы распланировать насыщенный событиями день (или неделю) и отметить уже выполненные задачи у меня могло уходить от 1 до 2 часов каждый день. При этом задачи и сроки их выполнения постоянно меняются и мероприятия переносятся, а планировщик, как назло, заставляет указывать не только, в какое точно время я планирую начать выполнение задания, но и сколько времени я планирую на него потратить. Думаю, не мне одному очевидно, что тратить 2 часа рабочего времени в день на выполнение чисто механических действий по заполнению планировщика задач - не очень хорошая идея.

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

Так как настольный календарь постоянно находится у меня в офисе, а смешивать в планировщике на телефоне рабочие задачи с задачами по учёбе считаю не совсем правильным, то решил для учёбы завести себе третий планировщик задач. Пока что пробую kanbanflow:
Что в нём нравится - простота. Что не нравится - меня снова вынуждают указывать время начала выполнения задачи. Пока не нашёл, как от этого избавиться. ))

Что на данный момент запланировал:
- 1 - 2 урока в день по языку C;
- 1 - 2 урока в день по английскому языку;
- 1 час - на чтение книг так или иначе связанных с программированием.

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

До        После


Английский язык

Кроме написания первой программы на C, вчерашний день примечателен для меня ещё и началом (пятым или шестым по счету) изучения английского языка.
Изучение решил начать с самых основ (буквы, звуки и т.п.). Поэтому нашёл на youtube курс по изучению английского языка для начинающих, состоящий из 200 уроков.

Если изучать по 1 - 2 урока в день, то в среднем на освоение курса у меня должно будет уйти около 150 дней (порядка пяти месяцев). То есть, ориентировочно к февралю 2016 года можно будет начинать вести блог параллельно на двух языках: русском и английском. ))
Возможно, у меня даже получится ускорить процесс изучения, если помимо видео-уроков буду ещё смотреть фильмы на английском и слушать в перерывах между IT-подкастами аудиокниги на английском.

До        После

среда, 14 сентября 2016 г.

Первая программа на C

Ну, вот, это и свершилось. Первая программа на C написана, скомпилирована и запущена.
Согласно спецификации, программа должна была выводить слово "Yo!" Я хотел соригинальничать и не стал писать традиционное "Hello, world!", за что и поплатился.

После нескольких запусков программы был неприятно удивлён тем, что она "ничего не выводит" в консоли.
Оказалось всё просто. Программа добросовестно выводила слово "Yo!", а после него, без перевода на новую строку, выводила имя пользователя, хоста и текущего каталога. Выведенное программой короткое слово просто терялось на фоне выведенной консолью вспомогательной информации.

Чтобы такого не повторялось, отныне буду давать указание функции printf() последним символом выводить символ перехода на новую строку - \n.

А вот если бы вместо "Yo!" написал "Hello, world!", то сразу заметил бы, что программа работает нормально.
Вывод: изобретение своего "велосипеда" не всегда себя оправдывает. ))

Пусть здесь "для истории" останется моя первая программа:
#include <stdio.h>
void main (void)
{
printf ("Yo! \n");
return;
}
До        После 

Онлайн-курсы

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

Меня обманули. ) В четвёртом уроке автор курса пообещал, что мы займёмся написанием программы на пятом уроке, а в пятом - что на шестом. Где-то на середине шестого урока я "сдулся" и отключился. Уснул самым бессовестным образом, т.к. просмотрел к тому времени два урока по 1,5 часа, времени уже было за полночь, а шестой урок обещал быть на 2,5 часа. И всё это после полноценного рабочего дня. Ещё и автор курса так монотонно и по многу раз повторял одно и тоже...

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

Думаю, что пока время позволяет, продолжу смотреть уроки полностью. В дальнейшем, если автор не исправится, то перейду на более сжатые курсы или буду смотреть от же курс в ускоренном темпе (на перемотке).

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

Предварительный план занятий попробую выложить в блоге.

До        После

вторник, 13 сентября 2016 г.

Погружаемся

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

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

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

После установочной сессии основное внимание придётся сосредоточить на учебной программе: алгебра, геометрия, дискретная математика, информатика, основы электротехники и иностранный язык.
По всяким историям-философиям-психологиям планирую проставить перезачёты.
Предвижу сложности с изучением английского языка. У нас с ним вообще непростая история. Если подсчитать, то я изучал его до средне-приемлемого уровня (разговорного и письменного) уже 4 или 5 раз. И каждый раз в течение года-двух забывал его из-за отсутствия практики и необходимости поддерживать знание языка.

Я мог бы конечно и по английскому языку (по крайней мере на первом курсе) проставить перезачёт, но специально не стану этого делать, так как понимаю, что английский язык будет являться частью моей будущей профессии. Так что будем "прокачивать" этот скилл.

До        После

понедельник, 12 сентября 2016 г.

Зачем мне нужен блог

Идея завести блог, в котором буду описывать свой путь к мечте, возникла не спонтанно. На днях прочитал от первой до последней записи блог такого же авантюриста как и я (http://benjamindudko.livejournal.com), который сделал примерно то же самое, что и я собираюсь сделать - изменил свою жизнь, переквалифицировавшись из журналиста в программиста. Заняло это у него от начала учебы  на курсах до трудоустройства примерно 6 месяцев.
Также на глаза мне попалась интересная книга - "Путь программиста" Джона Сомнеза.

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

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

Надеюсь, что на моём пути всё будет зависеть только от меня, моих сил и способностей. Если будет так, то всё получится. ))

До          После

Поступление в ВУЗ

С удивлением узнал, что для поступления в ВУЗ на заочное обучение на платной основе нужно сдать ЕГЭ по трём предметам: русский язык, математика и информатика.

Подготовка по каждому из предметов заняла около недели: неделя подготовки - экзамен.
В прошедшую субботу сдал последний экзамен - по русскому языку. Результаты по экзаменам следующие:
- математика - 77 из 100 баллов;
- информатика - 86;
- русский язык - 65.
Пока что у меня самый высокий общий балл по результатам вступительных экзаменов среди заочников - 228.

Если бы у меня это было первое высшее образование и я поступал на очную форму обучения, то поступил бы на бюджетное место, да ещё и стипендию получал бы 10000,0 рублей. Для сравнения, когда поступал учиться на юриста, то завалил все экзамены и учился на платной основе. Возможно, уже тогда были "знамения" того, что с юриспруденцией я зря связываюсь. ))

Интересно, чему детей учат в школе 11 лет, если школьная программа по любому из предметов с 6 по 11 класс проходится за 1 неделю. Может быть школа - это просто способ их чем-то занять до совершеннолетия? ))
Не менее интересно, чему такому будут меня "учить" (в кавычках - потому, что сам буду учиться) 4,5 года в ВУЗе, если за рубежом по аналогичной специальности учатся в колледже всего 2 года. При этом диплом нашего ВУЗа по IT-шной специальности котируется за рубежом примерно как диплом иностранного колледжа.
Раньше, если не ошибаюсь, на втором высшем образовании у нас учились всего 3 года. Было бы здорово и сейчас не 4,5, а 3 года учиться.

К необходимости поступать учиться в ВУЗ пришёл из тех соображений, что на рынке труда вакансии в IT индустрии содержат требование об обязательном наличии высшего образования по специальности. Что ж, рынок требует - будем соответствовать.

Сегодня был в ВУЗе, заключил договор и сделал первый взнос за обучение. Первая, установочная, сессия будет аж в январе 2017 года. Такими темпами можно и 10 лет учиться! ))
Но я рассчитываю не сидеть 4 месяца без дела. Буду изучать видео-курсы и читать всякие полезные книжки. Уже начал изучать видео-курс "Программирование на C". Надеюсь до 2 курса его не забыть, так как на 2 курсе у нас будет по такому предмету экзамен.

Отдельного упоминания заслуживает испытанный мной шок от первого посещения ВУЗа.
Идёт, знаете, себе по коридору такой 37-летний почти седой дядя, а от него, как от какого-то профессора, шарахаются в стороны 17-летние студенты. Первая мысль была: "Паника и ужас! Что я здесь делаю, среди этих детей?.. Спокойствие. Поступаю учиться". Вторая: "Как долго они будут смеяться, узнав, что я в ближайшем будущем собираюсь бросить "успешную карьеру" и составить им конкуренцию?.. Недолго. До первых экзаменов".
И тем не менее, ещё пару дней меня не отпускало ощущение того, что я добровольно выставляю себя на посмешище.

До                После

Как всё начиналось.

Всем привет!

Меня зовут Михаил, мне 37 лет и я адвокат.

Почему я акцентирую внимание на возрасте и профессии:
1) потому что у меня наступил "кризис среднего возраста" или, как это ещё называют более лестно для "пациентов", "период осознанного взросления";
2) потому что в моём возрасте (большая часть жизни уже позади), по мнению большинства моих знакомых, кардинально изменить в своей жизни уже ничего нельзя, можно лишь более-менее успешно плыть по течению той "реки", в которой ты к этому времени находишься;
3) потому что многие считают, что гуманитария не переучить на технаря;
4) потому что я хочу изменить свою жизнь и переквалифицироваться из гуманитария в технаря.

Почему я захотел изменить свою жизнь:

Я адвокат с 11-летним стажем на зарплате среднего уровня. Мне не нравится зарабатывать на жизнь тем, чем я занимаюсь, и я хочу это изменить. Ещё со школы мне нравилась и легко давалась математика. После школы я познакомился с компьютерами "Электроника", "Бейсик" и "Yamaha". Готов был сидеть за ними часы напролёт и писать программы, забыв про еду и сон.

По той причине, что период моего взросления пришёлся на "неспокойные" 1990-е, у меня не было возможности как следует обдумать свои планы на будущее и осознанно принять решение о своей будущей профессии. Главное было - выжить любой ценой. Будущая профессия выбиралась по принципу: а вот говорят, что адвокаты зарабатывают хорошо и стабильно. И на фоне задержек выплаты заработной платы всем техническим специалистам на 6 - 8 месяцев перспектива стать адвокатом смотрелась очень неплохо.

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

По официальным данным, средняя продолжительность жизни в России составляет что-то около 70 лет. В связи с этим у меня есть следующий выбор: продолжить ещё 33 года заниматься нелюбимым делом или потратить это время на то, чтобы делать то, что мне нравится.

Хорошо. Кто-то (наверное даже большинство) скажет: семья, обязательства, стабильность и т.д. А что если - в порядке бреда - мне предстоит прожить до 100 лет в здравом уме и ясной памяти (я не пью, не курю и не "употребляю", так что вполне возможно)? А если до 1000 лет? То есть ещё 63 или 963 года мне тоже нужно будет заниматься тем, что мне не нравится? Зачем? Дети вырастут и станут самостоятельными. Жена терпела мой откровенно нищенский доход, когда я был студентом и начинающим юристом без какой-либо финансовой поддержки со стороны бедных родителей. Надеюсь, потерпит ещё раз. К тому же она вполне способна прокормить себя самостоятельно. А может даже и меня. ))

По результатам своих рассуждений я решил, что дальше тянуть нельзя. Надо начинать двигаться к своей мечте.

Общий план такой:
1. Учёба и параллельно поиск новой работы в IT.
2. Зарабатывать на жизнь тем, что мне нравится делать.

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

После