Pull to refresh
6
0
Alexander Kardapolov @akardapolov

User

Send message

Классификация знаний в области программирования

Reading time7 min
Views188K
2 года назад я написал статью о классификации знаний в области программирования. Это было на волне интереса и моей активной деятельности по самообразованию в компьютерных науках. Написал статью и забыл о ней. Публиковать на Хабре не собирался. В конце концов, она базируется на моем личном опыте и знаних, которые могут оказаться весьма субъективны.

Недавно, на фоне постоянно поступающих вопросов «как научиться программированию?», я вспомнил про этот материал и перечитал его. Прошло уже 2 года, пополнился опыт, добавились знания, изменились взгляды. Но эта статья для меня не утратила актуальности, и я не нашел почти ничего, что хотел бы в ней изменить. Мне показалось, что она все же достойна публикации. И, возможно, кому-то она поможет в собственном профессиональном развитии.

Но прежде, чем «запустить» материал, еще небольшое отступление. О том, почему вообще я все это писал. Дело в том, что у нас в странах бывшего СССР с образованием в области IT очень туго. С одной стороны нет программ обучения, которые подготовят специалистов на должном уровне (наверное, за очень редкими исключениями, которые можно отнести к погрешности). С другой стороны, из-за широких возможностей самообразования, программисты и не спешат учиться в ВУЗах — все стремятся начать практиковать как можно раньше. Часто изучается только одно направление (например PHP+Mysql — самое популярное) и в бой. Причем, на этом все заканчивается. В итоге у нас огромное количество программистов, которые и базовых вещей не знают. Отсюда вытекают проблемы с качеством кода, и с эффекивностью алгоритмов, с велосипедированием.

Но программирование — это полноценная область знаний, которая требует в том числе и инженерной подготовки. Точно так же, как строительство или телекоммуникации. Да, построить дом (особняк) можно своими руками и без образования. А поднять большинство сайтов можно прочитав пару книг по PHP и HTML. Но многоэтажку без специальной подготовки не построишь, как и Гугл не напишешь, не зная основ.

Возможности для самообразования в компьютерных науках сейчас огромны. Единственное, чего не хватает, — это системности подготовки. Как разобраться, что и в какой последовательности изучать? Мне кажется, что этот материал поможет разложить по полочкам области знаний в компьютерных науках и составить для себя программу изучения по книгам. Выбор книг — тема отдельная, в рамки статьи не входит, но это можно обсудить в комментариях.

Поехали.
Читать дальше →
Total votes 78: ↑57 and ↓21+36
Comments52

Философия программирования 4 — Технология «Шапито»

Reading time8 min
Views30K
Представьте себе конвейер с программистами: сели люди за одним круглым столом, один огромный монитор во всю стену, и у каждого ещё свой обычный.

Первый: тоном капитана звездолёта, — нужна функция connectToDB() в главном файле.
Второй: — открываю — открывает нужный файл, находит функцию.
Первый: — что здесь происходит?
Третий: — запускаю — ставит брейкпойнт, запускает приложение, в момент останова произносит: — dbinstance в порядке — выводит значение на экран --, remotePort равен 8999, — это значение тоже видно на экране.
Первый: — странно, надо бы профилировать этот вызов.
Третий: — ок — диктует четвёртому — новая строка 123 console.time(), 125 console.timeEnd()
Четвёртый: набирает, — готово.
Читать дальше →
Total votes 58: ↑42 and ↓16+26
Comments21

В России создают пилотируемый корабль для полёта к Луне

Reading time1 min
Views12K
Ракетно-космическая корпорация «Энергия» имени С.П. Королёва совместно с предприятиями ракетно-космической промышленности России создают новый пилотируемый космический корабль, предназначенный для экспедиций к Луне.
Читать дальше →
Total votes 31: ↑21 and ↓10+11
Comments9

Как работает ZFS — часть 1: vdev

Reading time3 min
Views32K
Vdev, или Virtual Device — это базовая единица, на которой строится массив данных ZFS (zpool). Для работы ZFS необходим как минимум один vdev — виртуальное устройство, которое позволяет случайный доступ к информации на уровне блоков.

Обычно, в качестве таких блоков используются целые диски или iScsi/FC LUNы (raw-disk vdev), но можно также использовать разделы дисков или файлы. Целые диски предпочтительнее, так как для них ZFS использует onboard write cache, в результате чего производительность записи может значительно улучшиться. Я пока не буду объяснять разницу между logical vdev и leaf vdev — это топик для отдельной статьи про то как работает RaidzN и zfs mirror.
src.illumos.org/source/xref/illumos-gate/usr/src/uts/common/fs/zfs/vdev_disk.c#314
if (vd->vdev_wholedisk == 1) 
{
	int wce = 1;
	/*
	 * If we own the whole disk, try to enable disk write caching.
	 * We ignore errors because it's OK if we can't do it.
	 */
	(void) ldi_ioctl(dvd->vd_lh, DKIOCSETWCE, (intptr_t)&wce, FKIOCTL, kcred, NULL);
}

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

Каждый vdev разделен на логические разделы (metaslab),
Читать дальше →
Total votes 42: ↑39 and ↓3+36
Comments38

Postgres расправляет плечи

Reading time10 min
Views36K


С 6 по 7 февраля в бизнес-центре Digital October в Москве пройдёт конференция PGCONF.RUSSIA 2015, одним из организаторов которой я являюсь. PostgreSQL — одна из наиболее перспективных современных свободно распространяемых СУБД, активно развивающаяся и во многих случаях уже не уступающая флагману коммерческих СУБД Oracle, а в чем-то и превосходящая его. При этом что Postgres распространяется по очень свободной лицензии, близкой к BSD и MIT-лицензиям, позволяющей делать с ним что угодно — даже продавать от своего имени. Поэтому нет препятствий в создании на базе постгреса коммерческих СУБД и прикладных систем, и этим многие пользуются. Это, в свою очередь, дает возможность участвовать в разработке большему количеству людей, и активнее подпитываться новыми идеями. На страницах данного поста мы расскажем о том, как возникла и развивалась эта СУБД, каковы её сильные и слабые стороны, в том числе с точки зрения широкого распространения.
Читать дальше →
Total votes 64: ↑60 and ↓4+56
Comments25

Data tidying: Подготовка наборов данных для анализа на конкретных примерах

Reading time5 min
Views18K
Данная статья возникла в результате переработки и перевода информации на русский язык, взятой из двух источников:

  • из статьи «Tidy Data»
  • из соответствующего swirl урока по tidyr package

Для профессионалов в области анализа данных это, возможно, выглядит как давно выученная таблица умножения — вряд ли они найдут здесь что-то новое. А тех, кто как и я только знакомится с данной областью и возможностями языка R, приглашаю продолжить чтение.
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments2

7 золотых правил одного программиста

Reading time3 min
Views143K
Это статья про семь простых правил, которые я сформулировал для себя за годы работы программистом. Семь правил, которые подняли мою эффективность. Сделали меня лучше. Это мои правила и они работают для меня. Я не пытаюсь навязать их вам, я хочу поделиться с вами, и, возможно, узнать о том, каких правил и принципов придерживаетесь вы.

Компьютер всегда прав


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

Тут главное помнить, что в этих трех строчках есть ошибка. Если код работает не верно — значит код написан не верно. Точка. Виноваты только вы. Универсальный совет — идите спать! Ну или хотя бы отвлекитесь на чашку чая. Когда, через некоторое время, вы вернетесь к коду, наверняка станет ясно, что тут лишний оператор отрицания, или перепутаны две переменные с похожими именами, или еще какая-нибудь мелочь, в которой мы никогда никому не признаемся.
Читать дальше →
Total votes 140: ↑120 and ↓20+100
Comments83

Сеанс белой магии без разоблачений или как я троллей в ЖЖ искал

Reading time3 min
Views21K


Пролог


Последние год-полтора я чувствовал себя в ЖЖ как этот таксист. Впервые я зарегистрировался в LiveJournal уже больше 10 лет назад. Про фейсбук тогда наверно и Дуров не слыхивал, а тут можно было объединяться по интересам, обмениваться мнениями, писать корифеям типа Лебедева. У меня сформировалась френдлента и я стал замечать, что русский сегмент не так уж велик и в общем-то все друг друга знают. Года с 2011 примерно ЖЖ стал чахнуть, движуха стала перемещаться в твиттер и фейсбук, а я стал замечать что контингент комментирующих меняется. Сначала это было незаметно, но с прошлого года я поймал себя на мысли, что открывая комментарии к посту, я задаюсь вопросом того самого бородатого отшельника. Да и в прессе стали проскакивать статейки интересного содержания.

Но особой веры журналистам у меня нет, поэтому вооружившись Python, BeautifulSoup, psycopg2, matplotlib и PostgreSQL я решил провести собственное мини-расследование и заодно освежить/приобрести кое-какие навыки.
Читать дальше →
Total votes 58: ↑36 and ↓22+14
Comments34

Философия программирования 3 — Чичиков и программиат

Reading time12 min
Views24K
Где вы нашли философию у Дональда Кнута? Академическое сообщество, это — 20 сумасшедших учёных, 2000 чичиковых, 20000 бюрократов и миллион детишек. Кнут это — Чичиков. На западе, даже сумасшедший учёный — умеет быть медийным, у нас это — «ранимые люди, с ними надо очень бережно, в лучшем смысле слова». Не могут связать двух слов, обижаются на вопросы. Поэтому в нашей науке видны только чичиковы, они раздают и получают награды, становятся директорами, основывают лаборатории, распиливают гранты, пристраивают своих. С прессой общаются, правда, тоже с трудом, — совок. А на западе это — развитой класс, они умеют работать с прессой, позиционироваться, колонизировать, занимать ниши, основывать религии. Найти человека который прочитал «Искусство Программирования» или «Конкретная Математика» практически невозможно, — те, кто считают Кнута за авторитет слишком глупы чтобы прочитать их, а те, что поумнее — читают книжки получше. Видимо, поэтому Кнут платил по 2.56 за каждую найденную опечатку, в надежде, что хотя-бы прочитают. Все его, с позволения сказать, книги — это копипаста алгоритмов из стэнфордских журналов, разбавленная топорным юмором, человек просто вовремя занял тему. А «детишки» от науки читают то, что им дают взрослые дяди — бюрократы и чичиковы. Вот и выходит, у бюрократов нет мозгов, у чичиковых есть мозги, но нет совести, сумасшедшие учёные — ранимые люди, обижаются.

Читать дальше →
Total votes 55: ↑25 and ↓30-5
Comments38

Философия программирования 2 — Миф и язык

Reading time10 min
Views58K
def Миф и язык extends «трёхнаправленное программирование»;

Миф о том, что русские программисты лучшие в мире, запущен вовсе не партийными пропагандистами, он возник на перестроечной волне, вместе с мифами о хозяине-предпринимателе, невидимой руке рынка и ста сортах колбасы. Миф, это то, что человек не читавший взрослых книг называет «мем», а человек вообще не читающий, называет правдой. Передача «Разрушители мифов» берёт поверхностные мифы, которые можно легко опровергнуть, например, бросив бутерброд с маслом на пол тысячу раз. А вот Гордон, в одном из своих первых телепроектов «Собрание заблуждений», брался за раскрытие мифов посложнее, такие мифы нельзя раскрыть затопив машину и проверив, можно ли всё-таки открыть двери до того, как машина полностью наполнится водой, они как плавающий баг у которого нету «steps to reproduce». Вспомните Холмса или Хауса, интеллектуал в первую очередь отличается тем, что видит невидимое — пока паникующие пассажиры всматриваются в туман за бортом, он закрывает глаза и всматривается в свои «чертоги разума», вспоминает карту местности и ТТХ парохода.


«Всё содержится в моих чертогах разума, вы же понимаете о чём я мистер Холмс? Я обладаю знаниями, и поэтому могу щёлкать доктора Ватсона по носу хоть целый день.»
Читать дальше →
Total votes 99: ↑61 and ↓38+23
Comments103

Философия программирования — трёхнаправленное программирование

Reading time11 min
Views104K
Программирование рассматривается как процесс создания компьютерных программ. Слово процесс в этом определении не лишнее. Обычно рассуждают в духе «посмотрите, какую замечательную структуру данных можно описать на данном языке программирования». Философия программирования подразумевает оглянуться по сторонам, да и в глубь копнуть.

Собственно разделение на кодирование, и создание алгоритмов это уже специфика, сначала идёт жизнь, то есть человек опирается на некую мысль вроде «напишу-ка я фреймворк с такими-то свойствами». И вот это начальное направление это вопрос философии. Проблема в том, что часто жена программиста лучше его самого знает, на философском уровне, что он делает и почему. Элементарные философские категории: мышление, сознание, обусловленность программисту неведомы. И это странно, если сравнить способность программиста мыслить, например, читая статьи по функциональному программированию или алгоритмам поиска, вперемешку со статьями видных русских или европейских философов, окажется, что собственно навык мышления у программистов развит не меньше, а то и больше. Вот только язык программиста очень богат пока он рассуждает о паттерн-матчинге и жалок и органичен когда ему надо выйти из своей песочницы, оторваться от IDE и файлового менеджера.
Читать дальше →
Total votes 76: ↑57 and ↓19+38
Comments87

BudgetApps — Первый Всероссийский конкурс по открытым финансовым данным

Reading time4 min
Views9.6K
Друзья, под закат уходящего 2014 года и начала 2015 есть отличная новость для всех кто любит работать с открытыми данными, участвовать в конкурсах для разработчиков.

А также, я уверен, что есть и те кто любит историю и исторические данные.

С 23 декабря Минфин России с нашей помощью Информационной культуры открывает конкурс приложений BudgetApps http://budgetapps.ru/contest на открытых данных которые Минфин России публиковал последние несколько лет.



Данные самые разные. Это данные о бюджетах, данные об аудиторских организациях, государственном долге, государственных резервах и многое другое.

Ну и, так оказалось, что меня зовут Иван Бегтин и я член жюри этого конкурса.

Все они есть по ссылке на сайте Минфина — http://minfin.ru/ru/opendata/
И много бюджетных данных есть на Едином портале бюджетной системы — http://budget.gov.ru/data/opendata там есть структура бюджета в CSV формате, сами данные, справочники и многое и многое другое. А также данные по всем официальным учреждениям вот тут http://bus.gov.ru/public/opendata.html. На этот ресурс обратите особое внимание. Там опубликованы индикаторы, бюджеты, уставы и многое другое по каждой государственной организации и муниципальном учреждении в России. Если Вы задумаете любой региональный проект, то эти данные будут просто бесценны.

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

Я лично считаю, что не стоит ограничиваться только теми данными которые уже переведены в машиночитаемый вид. Есть также данные которые можно превратить в открытые данные самостоятельно.
Многие умеют писать парсеры, но для тех кто этого не делал раньше, хорошее подпорье может быть ScraperWiki (https://scraperwiki.com/) чтобы собрать информацию со страниц, а также разные библиотеки для разбора Excel файлов, извлечение таблиц из PDF документов — с помощью pdftables.com или сервисов Abbyy или их Abbyy Finereader.

На сайте и других ресурсах Минфина кроме данных есть множество другого интересного что можно превратить в данные. Начиная просто от новостей которые стали особенно актуальны в последние дни, продолжая всем остальным.

Исторические бюджеты

Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments57

Построение словаря текста на примере NLP библиотеки AIF

Reading time6 min
Views7.8K
Так уж повелось, что каждый релиз лингво-независимой библиотеки обработки естественных текстов AIF сопровождается заметкой о том, что было сделано и как   все работает. Подобные тексты о предыдущих двух релизах Alpha1 и Alpha2 можно найти вот тут и тут. Не исключением из этого правила стал и текущей релиз Alpha3, в котором появилась возможность строить словарь токенов для входного текста. О том, как все работает под капотом и как это можно использовать в своём проекте и пойдёт сегодня речь.
Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments8

Поиск наилучшей последовательности просмотра списка 250 лучших фильмов с помощью языка Wolfram Language (Mathematica)

Reading time7 min
Views56K

Скачать перевод в виде документа Mathematica, который содержит весь код использованный в статье, можно здесь (архив, ~76 МБ).

Введение


Некоторое время назад, если быть точным — 515 дней, вышел пост Маттиаса Одисио (Matthias Odisio) под названием “Random and Optimal Mathematica Walks on IMDb’s Top Films” (Случайные и оптимальные блуждания Mathematica по списку 250 лучших фильмов по версии IMDB). В нем рассказывается о том, каким образом можно получить оптимальную последовательность просмотра фильмов из соответствующего списка, основанную на близости жанров фильмов и близости постеров фильмов с точки зрения цвета.
Читать дальше →
Total votes 100: ↑93 and ↓7+86
Comments36

Предпосвящение десятилетию Openbravo POS

Reading time6 min
Views24K

Вступление


В январе 2015 года исполняется 10 лет приложению Openbravo POS. За эти годы Openbravo POS(включая форки) стало лидером в мире СПО для автоматизации розничной торговли (POS, Point of Sale – торговая точка или более конкретно, рабочее место кассира). Данная статья предварительный итог того, что удалось и не удалось реализовать в проекте Openbravo POS за прошедшие 10 лет.

История имени



Отцом основателем, бессменным руководителем и практически единоличным коммитером проекта был Эдриан Ромеро из Испании. У проекта изначальное название с 2005 по 2007 год было Tina POS, но в августе 2007 года возник конфликт с этой торговой маркой и пришлось переименовать проект в Libre POS. В отличии от первого, второе название не продержалось и пол года, так как Эдриан перешёл работать в Openbravo и первая часть названия была «забрендирована», оставив от старого только «POS» на конце, что подчёркивало с этого момента принадлежность проекта к экосистеме данной ERP-системы в качестве дополнения в сфере розничной торговли. Также в феврале 2008 года вышла и первая версия Openbravo POS сразу за номером 2.00.
Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments5

Обзор наиболее интересных материалов по анализу данных и машинному обучению №26 (8 — 14 декабря 2014)

Reading time4 min
Views12K

Представляю вашему вниманию очередной выпуск обзора наиболее интересных материалов, посвященных теме анализа данных и машинного обучения.
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments2

В Google сумели продать полмиллиона Google Cardboard

Reading time1 min
Views8.1K
Вчера в блоге для разработчиков Google сообщили об успехе продаж своего картонного аксессуара Cardboard, который предназначен для создания «очков виртуальной реальности» при помощи смартфона в «домашних условиях». Ни много ни мало, но Cardboard, представляющий из себя несколько скреплённых картонок и пару линз, был продан в количестве, превышающем 500 000 экземпляров.

Впервые проект был показан на ежегодной конференции Google I/O 2014 около полугода назад, где он и был определён спикерами как «лёгкий способ» получить очки для виртуальной реальности (любопытно отметить, что инженеры проекта занимались им в рамках "правила 20%" времени). Cardboard представляет собой своеобразный конструктор, где деталями выступают картонные элементы, которые собираются в подобие настоящих VR-очков, знакомых либо по фильмам, либо по проекту Oculus.
Узнать подробности
Total votes 17: ↑16 and ↓1+15
Comments2

NGINX получила инвестиций ещё на $20 миллионов

Reading time1 min
Views6.9K


Компания NGINX, известная своим сверхбыстрым веб-сервером Nginx, успешно завершила очередной раунд венчурных инвестиций, на котором было получено $20 миллионов. Инвесторами выступили e.ventures, Runa Capital, Index Ventures и сам CEO Nginx Гас Робертсон. Компания планирует потратить деньги на разработку продукта, расширение своего сообщества, маркетинг и географическую экспансию за пределами США.
Откуда дровишки
Total votes 27: ↑26 and ↓1+25
Comments5

ASH Viewer

Reading time5 min
Views22K
Предыстория (2008 г.)

По работе часто приходилось разбираться с производительностью серверов БД Oracle. После выхода Oracle 10g задача по мониторингу и диагностике проблем с производительностью значительно упростилась – с помощью истории активных сессий (Active Session History, ASH) стало возможно узнать, что происходило с БД в прошлом, что творится на сервере в данный момент, и даже прогнозировать, что будет происходить с нагрузкой в будущем.

Но, во-первых, процесс миграции на новую версию достаточно длительный, и некоторые заказчики продолжали использовать старые версии. А во-вторых, средства визуализации истории активных сессий от Oracle, которые имелись в наличии:
  • Требовали некоторых телодвижений по их установке и настройке – это Oracle Enterprise Manager Console (DB Console) или Oracle Enterprise Manager Grid Control (сейчас Oracle Enterprise Manager Cloud Control). DB Console из моей (и не только) практики требовал для установки применения очень сильных админских заклятий. Также в целях экономии ресурсов не все хотят ставить на сервера БД дополнительные сервисы или разворачивать на своей площадке отдельную инфраструктуру для мониторинга;
  • Обладали рядом архитектурных недостатков. К примеру, в случае зависания сервера БД доступ к информации из истории активных сессий посредством Oracle Enterprise Manager Console становился невозможным, и оперативно выяснить, что «что-то пошло не так» (с) было практически нереально;
  • Отсутствовала функциональность в части сохранения данных мониторинга и последующего его анализа на своей площадке.

Из сторонних бесплатных средств, похожая функциональность была реализована в утилите ASHMON за авторством Kyle Hailey. Но функционал был только для просмотра, и работала она под одну платформу – Windows.

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



Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments11

Time Series, метрики и статистика: знакомство с InfluxDB

Reading time10 min
Views86K
InfluxDB

Введение


Любому системному администратору постоянно приходится иметь дело с данными, представленными в форме временных рядов (time series): статистика скачивания файлов, статистика запросов к серверам, данные об использовании системных и аппаратных ресурсов виртуальными машинами…

Чтобы все это хранить и обрабатывать, нужен адекватный и производительный инструмент.
Читать дальше →
Total votes 31: ↑28 and ↓3+25
Comments26

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity