Жаль, что вряд ли смогу отправить это письмо. А тебе, наверное, было бы интересно узнать, что жизнь и работа у тебя сложились неплохо. А если бы ты это прочитал вовремя, то могли бы сложиться еще лучше. Что касается работы — ты стал вполне приличным специалистом, сегодня тебя уважают, с тобой советуются и некоторые даже благодарны за науку. Очень хочется дать тебе тогдашнему несколько советов. Кое о чем из письма ты и так уже догадываешься, но сегодня я могу точно сказать — оно помогает.
Пользователь
Как работает реляционная БД
51 мин
546KТуториал
Перевод
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.
На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
+226
Возможные варианты конца света, или 3,14здец неизбежен?
11 мин
5.2KСразу предупреждаю. Будет много текста и картинок.
На днях ко мне зашел сосед с четвертого этажа и сообщил, что он только что на выходе из магазина вступил в контакт с инопланетянами, которые по секрету рассказали ему, что через два года, два месяца и два дня на Земле наступит конец света. При этом братья по разуму забрали у соседа бутылку водки, и он явно рассчитывал на компенсацию. Вручив мне, «как грамотному человеку», чертеж спасительного космолета (вырван из инструкции к китайской соковыжималке) и стрельнув полтинник «до получки», сосед немедленно испарился. А я, отложив свой отчет (шеф точно снесет мне голову), смеха ради набрал в поисковике «конец света» и… к собственному удивлению, обнаружил, что сосед не так уж и далек от истины.
На днях ко мне зашел сосед с четвертого этажа и сообщил, что он только что на выходе из магазина вступил в контакт с инопланетянами, которые по секрету рассказали ему, что через два года, два месяца и два дня на Земле наступит конец света. При этом братья по разуму забрали у соседа бутылку водки, и он явно рассчитывал на компенсацию. Вручив мне, «как грамотному человеку», чертеж спасительного космолета (вырван из инструкции к китайской соковыжималке) и стрельнув полтинник «до получки», сосед немедленно испарился. А я, отложив свой отчет (шеф точно снесет мне голову), смеха ради набрал в поисковике «конец света» и… к собственному удивлению, обнаружил, что сосед не так уж и далек от истины.
+250
О плохих словах, или Как написать текст, не сделав из него какашку
8 мин
64KТуториал
Здравствуйте.
В первой части статьи я расскажу о некоторых стилистических «косяках», которые придают текстам характерный канцелярский унылый стиль. Вторая часть посвящена более серьёзной ошибке, которая, к сожалению, грозит в ближайшее время стать правилом.
В первой части статьи я расскажу о некоторых стилистических «косяках», которые придают текстам характерный канцелярский унылый стиль. Вторая часть посвящена более серьёзной ошибке, которая, к сожалению, грозит в ближайшее время стать правилом.
+156
Как это сделано: парсинг статей
4 мин
81KДля меня всегда было некоей магией то, как Getpocket, Readability и Вконтакте парсят ссылки на страницы и предлагают готовые статьи к просмотру без рекламы, сайдбаров и меню. При этом они практически никогда не ошибаются. А недавно подобная задача назрела и в нашем проекте, и я решил копнуть поглубже. Сразу скажу, что это «белый» парсинг, вебмастеры сами добровольно пользуются нашим сервисом.
+101
Знай сложности алгоритмов
2 мин
1MПеревод
Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
+280
Про Linux — для любознательных Windows-пользователей
9 мин
315KТак уж получилось, что даже на Хабре многие имеют очень смутное представление о семействе OS Linux.
Цель данной статьи – максимально популярным языком рассказать про особенности и отличия Linux от Windows для тех, кто вообще не имел с ним дела.
Я уже не один год свободно пользуюсь Archlinux, загружая винду лишь «на поиграться». Данная статья рассказывает о вещах, которые я выяснил эмпирическим путем, тыкаясь словно слепой котенок. Если бы в свое время мне попалась бы именно такая информация именно в такой форме — это сэкономило бы мне как минимум 2 года, в течение которых я переходил с Windows на Linux.
+93
Hakyll для начинающих
4 мин
11KТуториал
Однажды вы, как и я какое-то время назад, решаете создать свою персональную страничку с блогом (ну или без). Существует множество способов достигнуть задуманного, в зависимости от вашего опыта программирования, уровня лени ну и степени гикнутости. Но лично мне кажется, что заводить хостинг и домен и создавать серьезный “взрослый” сайт просто чтобы показать себя как-то слишком избыточно. Потому для достижения данной цели вы можете пойти более простым путем — сделать статический сайт.
Я надеюсь, что не нужно приводить доказательства сказанному Йеспером, так как все и так достаточно понятно.
В тот день, когда я принял решение сделать свою персональную страничку, я обнаружил что возможно разместить оную на github. Для публикации будет достаточно вызвать git push -u origin master из своего репозитория, так что все должно быть достаточно просто. Но для начала, нам нужно найти какой-нибудь builder статических сайтов, чтобы с его помощью одни раз все настроить, запушать и затем время от времени добавлять свои новые посты, информацию о проектах, ну и что бы вам там хотелось. Настроить популярнейшее решение Jekyll на моей Windows машине оказалось как-то слишком проблематично, потому немного полазив в интернете я нашел замечательную альтернативу — Hakyll. А так как у меня давно уже чесались руки попробовать что-нибудь сделать на Хаскелле я решил что стоит попробовать. Если вам интересно последовать по моим стопам, добро пожаловать.
Статические сайты быстрые, безопасные, легкие в публикации и могут управляться через систему контроля версий. Jasper Van der Jeugt
Я надеюсь, что не нужно приводить доказательства сказанному Йеспером, так как все и так достаточно понятно.
В тот день, когда я принял решение сделать свою персональную страничку, я обнаружил что возможно разместить оную на github. Для публикации будет достаточно вызвать git push -u origin master из своего репозитория, так что все должно быть достаточно просто. Но для начала, нам нужно найти какой-нибудь builder статических сайтов, чтобы с его помощью одни раз все настроить, запушать и затем время от времени добавлять свои новые посты, информацию о проектах, ну и что бы вам там хотелось. Настроить популярнейшее решение Jekyll на моей Windows машине оказалось как-то слишком проблематично, потому немного полазив в интернете я нашел замечательную альтернативу — Hakyll. А так как у меня давно уже чесались руки попробовать что-нибудь сделать на Хаскелле я решил что стоит попробовать. Если вам интересно последовать по моим стопам, добро пожаловать.
+16
90 рекомендаций по стилю написания программ на C++
20 мин
413KПеревод
От переводчика. Искал в интернете простой и легко применимый гайдлайн по написанию программ на C++. Мне понравился один из вариантов, и я решил его перевести и опубликовать. Если хабрапользователи хорошо встретят этот топик, могу перевести и другие связанные документы, а также гайдлайны по написанию кода от других компаний.
1 Введение
Настоящий документ содержит рекомендации по написанию программ на языке C++.
Рекомендации основаны на установившихся стандартах, собранных из различных источников, личного опыта, частных требований и потребностей определённых проектов, а также почерпнутых из источников (см. ниже).
Но для появления ещё одного списка рекомендаций, помимо указанных источников, есть несколько причин. Основная причина — их излишняя обобщённость, поскольку зачастую требуется задать частные правила (в особенности правила именования). Данный документ содержит комментарии, что делает его более удобным в использовании при проведении ревизий кода, чем другие уже существующие документы. К тому же, рекомендации по программированию обычно вперемешку содержат описания проблем стиля и технических проблем, что не совсем удобно. Этот документ не содержит каких-либо технических рекомендаций по C++, делая упор на вопросах стиля.
+93
Boost Signals — сигналы и слоты для C++
4 мин
56KТуториал
О чем эта статья
Сегодня я расскажу про библиотеку Boost Signals — про сигналы, слоты, соединения, и как их использовать.
Сигнал — это тип данных, который может хранить в себе несколько функций обратного вызова, и вызывать их.
Слот — это, соответственно, и есть подсоединяемые к сигналу функции.
Как уже было сказано, к одному сигналу можно подключить несколько функции, и при вызове сигнала, подключенные функции вызываются в порядке их подключения.
Похожую систему иногда называют событийной, тогда сигналы — это события, а слоты — это подписанные на определенные события обработчики.
+51
Шпаргалка по верстке для больших и маленьких
3 мин
101KТуториал
Приветствую!
Хочу представить вашему вниманию небольшую шпаргалку, в которой собраны решения некоторых из часто встречающихся проблем, а также кое-какие малоизвестные, на мой взгляд, факты.
Статья рассчитана скорее на новичков и на людей, имеющих косвенное отношение к верстке, но которым по долгу службы часто приходится иметь с ней дело. Возможно, даже гуру верстки найдут в ней что-нибудь новое для себя, если давно не совершенствовали свои навыки.
Хочу представить вашему вниманию небольшую шпаргалку, в которой собраны решения некоторых из часто встречающихся проблем, а также кое-какие малоизвестные, на мой взгляд, факты.
Статья рассчитана скорее на новичков и на людей, имеющих косвенное отношение к верстке, но которым по долгу службы часто приходится иметь с ней дело. Возможно, даже гуру верстки найдут в ней что-нибудь новое для себя, если давно не совершенствовали свои навыки.
+103
Работа с COM портом в Android приложениях
2 мин
75KВсе доброго времени суток!
Однажды я задумался над разработкой приложения, которое требовало бы общения с hardware устройством, через COM порт. Хотя Android заботливо предоставляет api для работы с usb устройствами, оно мне к сожалению не подходило, так как хотелось осуществлять поддержку моего старого планшета на базе андроид версии 2.2. Стандартное api ото Гугла, не подходило
Однажды я задумался над разработкой приложения, которое требовало бы общения с hardware устройством, через COM порт. Хотя Android заботливо предоставляет api для работы с usb устройствами, оно мне к сожалению не подходило, так как хотелось осуществлять поддержку моего старого планшета на базе андроид версии 2.2. Стандартное api ото Гугла, не подходило
+16
Через тернии к Haskell (перевод). 2/2
18 мин
45KТуториал
Вторая часть ПЕРЕВОДА короткого и жесткого введения в Haskell. С первой можно ознакомиться здесь
Оригинал здесь
+65
Через тернии к Haskell. 1/2
25 мин
228KТуториал
Перевод
Первая часть короткого и жесткого введения в Haskell. Вторую часть можно найти здесь
tl;dr: Очень краткое и сжатое введение в Haskell.
- Введение
- Необходимый минимум из Haskell
- Сложная часть
UPD. Если туториал вам понравился, черкните пару строк автору оригинальной статьи. Человеку будет приятно ;)
+129
Небольшой логгер стека вызовов для C++
5 мин
23KНа написание этого топика меня сподвиг топик "Какие кодотрюки вы знаете?", и я хотел было поделиться данным логгером там, но автор просил «без фанатизма», и желал видеть такие трюки, на понимание которых требуется не больше пяти-десяти секунд, поэтому я решил вынести это дело в отдельный топик, т.к. по-быстрому такое взглядом не окинешь.
Будет рассмотрен небольшой, но иногда довольно полезный класс, плюс небольшой трюк с макросами, позволяющие проводить первичный анализ стека вызовов (call stack) прямо в stdout, в процессе работы программы. Разумеется, на stdout свет клином не сошёлся, и можете перенаправить хоть в файл, хоть куда-нибудь ещё — я лишь демонстрирую общий принцип.
Сразу договоримся:
- злоупотребление макросами — зло
- ничего нового и сверхъестественного в данной статье нет, она будет понятна даже новичку (на них и рассчитана)
- данный приём мало применим (или вообще не применим) в многопоточной среде
- реализация не претендует на идеальность, полноту, и уж тем более уникальность
- данный приём ни в коем случае не заменяет, а лишь дополняет дебаггер
Но если при написании программы вы не раз писали что-то вроде printf(«Entering Foo()\n»); для мониторинга входа в ту или иную функцию, то вы пришли как раз по адресу.
+49
Prolog, введение
13 мин
102KДовольно оживленное обсуждение предыдущей стати (http://habrahabr.ru/blogs/programming/47416/) показало, что тема пролога оказалась интересна сообществу.
Чтобы заинтересовать еще более читателя и вместе с тем облегчить ему начало работы с этим языком, я решил написать немного начальных данных о прологе.
Кратко основные особенности.
Чтобы заинтересовать еще более читателя и вместе с тем облегчить ему начало работы с этим языком, я решил написать немного начальных данных о прологе.
Кратко основные особенности.
+50
Изучить Github за 15 минут
1 мин
127KTryGit — интерактивный обучающий курс по Github в стиле Codecademy. Курс состоит из 25 мини-уроков, которые знакомят пользователя с базовыми понятиями и основными командами git, при этом ученик своими руками вводит команды в консоль, смотрит результат и читает сопровождающие надписи с объяснением происходящего.
Вот таким в будущем должно стать обучение в школах!
Конечно, 15-минутное введение не заменит полноценного учебника. Для обучения можно рекомендовать бесплатную книгу Pro Git и видеокурс Getting Git.
Вот таким в будущем должно стать обучение в школах!
Конечно, 15-минутное введение не заменит полноценного учебника. Для обучения можно рекомендовать бесплатную книгу Pro Git и видеокурс Getting Git.
+137
Однострочники на С++
2 мин
61KНа хабе появилось несколько топиков об «однострочниках» на разных языках, которые решали простые задачи. Я решил опубликовать несколько алгоритмов на языке C/С++.
Итак, поехали!
+74
Я не могу написать бинарный поиск
11 мин
207KНедавно (буквально два года назад) тут пробегала статья Только 10% программистов способны написать двоичный поиск. Двоичный поиск — это классический алгоритм поиска. Мало того, это еще чрезвычайно простой алгоритм, который можно очень легко описать: берем отсортированный массив, смотрим в середину, если не нашли там число, в зависимости от того, что в середине — ищем это число этим же методом либо в левой части, либо в правой, откидывая средний элемент. Для функций также, просто берем не массив, а функцию. Все очень и очень просто, алгоритм описан почти везде, все баги словлены и описаны.
Так вот, я не могу реализовать двоичный поиск. Для меня он ни капельки не тривиален. Наверное, я ненастоящий программист. А ведь так и есть, я всего-лишь студент, но ведь это не оправдание? Если точнее, я не могу реализовать хороший корректный красивый двоичный поиск. Все время у меня вылезает проблема либо с корректностью, либо с красивостью, либо и с тем, и с другим. Так что, да, заголовок немного желтоват.
Прежде чем читать этот топик, напишите свою версию бинарного поиска — для отсортированного массива. Причем, в зависимости от параметра, поиск должен выдавать или первый элемент, или любой из дублирующих. Еще для сравнения, напишите бинарный поиск для функций
Так вот, я не могу реализовать двоичный поиск. Для меня он ни капельки не тривиален. Наверное, я ненастоящий программист. А ведь так и есть, я всего-лишь студент, но ведь это не оправдание? Если точнее, я не могу реализовать хороший корректный красивый двоичный поиск. Все время у меня вылезает проблема либо с корректностью, либо с красивостью, либо и с тем, и с другим. Так что, да, заголовок немного желтоват.
Прежде чем читать этот топик, напишите свою версию бинарного поиска — для отсортированного массива. Причем, в зависимости от параметра, поиск должен выдавать или первый элемент, или любой из дублирующих. Еще для сравнения, напишите бинарный поиск для функций
+49
Nikodemus' Common Lisp FAQ
11 мин
12KПеревод
Nikodemus' Common Lisp FAQ
Последнее обновление: 2012-04-13
Это очень неофициальное ЧаВО по языку Common Lisp, отражающее субъективное мнение Nikodemus Siivola. Этот текст частично основан на других ЧаВО, встречавшихся на просторах интернета и comp.lang.lisp.
Если вы думаете, что я воспользовался вашим текстом, буду рад признаться в этом, поэтому пишите на nikodemus@random-state.net.
Текущая версия этого ЧаВО доступна по следующим адресам:
http://random-state.net/files/nikodemus-cl-faq.txt
http://random-state.net/files/nikodemus-cl-faq.html
ЧаВО также периодически публикуется в comp.lang.lisp.
Последнее обновление: 2012-04-13
Это очень неофициальное ЧаВО по языку Common Lisp, отражающее субъективное мнение Nikodemus Siivola. Этот текст частично основан на других ЧаВО, встречавшихся на просторах интернета и comp.lang.lisp.
Если вы думаете, что я воспользовался вашим текстом, буду рад признаться в этом, поэтому пишите на nikodemus@random-state.net.
Текущая версия этого ЧаВО доступна по следующим адресам:
http://random-state.net/files/nikodemus-cl-faq.txt
http://random-state.net/files/nikodemus-cl-faq.html
ЧаВО также периодически публикуется в comp.lang.lisp.
+28
Информация
- В рейтинге
- Не участвует
- Откуда
- Калининградская обл., Россия
- Зарегистрирован
- Активность