Как стать автором
Обновить
1
0
makcumm @makcumm

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

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

300 потрясающих бесплатных сервисов

Время на прочтение11 мин
Количество просмотров1.6M


Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly.com Domain: Конструктор веб-сайтов.
  • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
  • Withoomph: Мгновенное создание логотипов (англ.).
  • Hipster Logo Generator: Генератор хипстерских логотипов.
  • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
  • Invoice to me: Бесплатный генератор счета.
  • Free Invoice Generator: Альтернативный бесплатный генератор счета.
  • Slimvoice: Невероятно простой счет.

Читать дальше →
Всего голосов 341: ↑325 и ↓16+309
Комментарии107

Статический анализ PHP кода на примере Symfony2

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

Аннотация


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

С PHP дело обстоит сложнее: уже писали про статический анализ PHP кода, но в целом инструментарий тут гораздо беднее, и динамическая природа языка делает процесс разработки-тестирования сложнее. Для сравнения, в той же Java компиляция проекта сама по себе помогает найти ошибки, а в PHP типизация слабая, поэтому даже тесты могут пропустить ошибки.
Читать дальше →
Всего голосов 26: ↑21 и ↓5+16
Комментарии56

Несколько интересных особенностей MySQL

Время на прочтение8 мин
Количество просмотров63K
В не очень далеком прошлом мне пришлось покопаться немного в исходном коде MySQL, и разобраться в некоторых аспектах его работы. В ходе работы лопаткой, и эксперимeнтов, я наткнулся на несколько очень интересных особенностей, часть из которых просто забавна, а в случае некоторых бывает очень интересно понять, чем руководствовался программист, который принимал решение сделать именно так.

Начнем с такого интересного типа, как ENUM.

mysql> CREATE TABLE enums(a ENUM('c', 'a', 'b'), b INT, KEY(a));
Query OK, 0 rows affected (0.36 sec)

mysql> INSERT INTO enums VALUES('a', 1), ('b', 1), ('c', 1);
Query OK, 3 rows affected (0.05 sec)
Records: 3  Duplicates: 0  Warnings: 0


Итак, у нас есть таблица, в ней есть два столбца. У первого, a, тип ENUM, у второго, b, INT. В таблице три строки, у всех трех значение b равно 1. Интересно, чему равны минимальный и максимальный элементы в столбце a?

mysql> SELECT MIN(a), MAX(a) FROM enums;
+--------+--------+
| MIN(a) | MAX(a) |
+--------+--------+
| c      | b      |
+--------+--------+
1 row in set (0.00 sec)


Кажется странным, было бы разумно, если бы самым маленьким был 'a', а самым большим — 'c'.
А что если выбрать минимум и максимум только среди тех строк, где b = 1? То есть, среди всех строк?

mysql> SELECT MIN(a), MAX(a) FROM enums WHERE b = 1;
+--------+--------+
| MIN(a) | MAX(a) |
+--------+--------+
| a      | c      |
+--------+--------+
1 row in set (0.00 sec)


Вот так мы заставили MySQL поменять свое мнение о том, как сравнивать поля в ENUM, просто добавив предикат.
Разгадка такого поведения заключается в том, что в первом случае MySQL использует индекс, а во втором нет. Это, конечно, не объясняет, почему MySQL сравнивает ENUMы по разному для сортировки в индексе, и при обычном сравнении.

Второй пример проще и лаконичнее:

mysql> (SELECT * FROM moo LIMIT 1) LIMIT 2;
+------+
| a    |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)


Когда я показал этот запрос своему коллеге, который занимается разработкой парсера SQL, его вопрос был не «почему этот запрос возвращает две строки», а «как надо написать SQL парсер так, чтобы такой запрос был валидным, без того, чтобы написать правило, специально разрешающее такой запрос».

Интересно, что далеко не любой SELECT в скобках сработает, в частности, UNION в скобках — это синтаксическая ошибка:

mysql> (SELECT * FROM moo UNION ALL SELECT * FROM hru) LIMIT 2;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION ALL SELECT * FROM hru) LIMIT 2' at line 1


Еще несколько интересных примеров под катом
Читать дальше →
Всего голосов 113: ↑110 и ↓3+107
Комментарии95

Несколько версий php на одном сервере. suphp

Время на прочтение4 мин
Количество просмотров40K
В соседнем топике от bondbig'a прозвучал вопрос: «Расскажите лучше, как самому запилить две версии php на одном сервере (5.3 и 5.5, например).» И я попробую на него ответить на примере suphp, не останавливаясь на деталях, а описав только общую концепцию.

suphp это модуль для apache, который вызывается вместо mod_php и изначально был рассчитан на запуск apache от разных пользователей. Это придумано для того, что бы злоумышленник взломав 1 сайт не получил доступ ко всем сайтам на сервере (ведь по умолчанию apache работает от одного пользователя для всех сайтов на сервере). Но его можно приспособить и под наши задачи.

Я не буду сравнивать suphp с mtm-itk, скажу лишь что компания, в которой я работаю применяет suphp на серверах виртуального хостинга (да, я работаю в хостинг провайдере), применяет успешно и жалоб на этот модуль на моей памяти никогда не было.
Читать дальше →
Всего голосов 14: ↑9 и ↓5+4
Комментарии11

15 лучших JavaScript-библиотек для построения диаграмм и сводных таблиц

Время на прочтение6 мин
Количество просмотров307K
Практически невозможно представить себе информационную панель без диаграмм и графиков. Они быстро и эффективно отображают сложные статистические данные. Более того, хорошая диаграмма также улучшает общий дизайн вашего сайта.

В этой статье я покажу вам некоторые из лучших JavaScript библиотек для построения диаграмм/схем (и сводных таблиц). Эти библиотеки помогут вам в создании красивых и настраиваемых графиков для ваших будущих проектов.

Хотя большинство библиотек являются бесплатными и свободно распространяемыми, для некоторых из них есть платные версии с дополнительным функционалом.

Читать дальше →
Всего голосов 71: ↑65 и ↓6+59
Комментарии17

Как использовать API сайта, у которого нет API?

Время на прочтение4 мин
Количество просмотров80K
У меня достаточно часто появляется задача получить данные от стороннего сайта, при этом далеко не всегда этот сайт предоставляет возможность удобно получить эти данные через API. Единственное решение в таком случае — парсить html содержимое страниц. Когда-то я писал регэкспы, потом появились библиотеки, позволяющие получить нужное содержимое по css-селектору, а сейчас и это кажется сложной задачей, которую хотелось бы упростить.

Сегодня я хочу рассказать вам о моей небольшой библиотеке, позволяющей описать в API-стиле http-запросы и парсить ответ сервера в нужный вам формат.
Читать дальше →
Всего голосов 115: ↑105 и ↓10+95
Комментарии40

Почему возникают теории заговора и как с ними бороться

Время на прочтение8 мин
Количество просмотров94K
В наш жидомасонский век заговоров и конспирологических теорий человеку бывает трудно понять что же на самом деле вокруг него происходит. И дело здесь не столько в ТВ, советских газетах и американских интернетах. Собака зарыта в природной тяге человека всё объяснять и классифицировать — тяга, которая так же сильна, как тяга поесть, или поспать. Понять, что происходит сейчас — значит предсказать, что будет происходить потом, — что, в свою очередь, позволит повысить вероятность выживаемости.

Паттерны, как основа самообучения


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

Принцип действия этой системы самообучения довольно тривиален: все, что случается больше 1 раза — является кандидатом на то, чтобы стать паттерном. Все последующие паттерны, как правило, основываются на базе уже имеющихся паттернов. Так, начинающий горнолыжник будет обучаться езде на лыжах с помощью уже имеющейся у него информации о координации тела в пространстве, которую он мог получить либо научившись до этого кататься на велосипеде, либо же, например, научившись до этого кататься на коньках. Если же не было ни велосипеда, ни коньков, и вообще ничего, то обучение будет проходить на основе имеющейся у человека добытой опытным путем информации о прогулках в парке, или беге по кругу стадиона во время уроков физкультуры. Очевидно, что в таком случае обучение будет проходить значительно медленнее, чем если бы у человека уже был опыт занятий, максимально приближенных к спускам на горных лыжах. Конечно, бывают исключения, когда человек, например, заучил неправильный удар, который он отрабатывал дома годами, а потом попал к тренеру, который хватается за голову и говорит «лучше б ты пришел совсем без навыков (неправильных паттернов), чтоб я с нуля из тебя вылепил бойца». Здесь важно понимать, что такого рода дефективный паттерн, или антипаттерн будет даже мешать скорейшему обучению человека. В данном конкретном случае, модель «чем больше паттернов, тем лучше» — не работает.
Но в целом, если у человека есть толика сознательности и он соблюдает диету на правильные паттерны, то количество этих освоенных паттернов в его голове неуклонно будет повышать скорость обучения новым паттернам — человек будет схватывать на лету.
Читать дальше →
Всего голосов 111: ↑64 и ↓47+17
Комментарии543

Логика мышления. Часть 6. Система проекций

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


Для тех, кто только присоединился, я советую начать с первой части или хотя бы с описания используемой нами волновой модели коры. Суть волновой модели в том, что информация кодируется одновременно двумя способами. Первый способ – это паттерны вызванной активности, соответствующие обнаруженным нейронами-детекторами явлениям. Второй – волны идентификаторы, распространяющиеся от паттернов вызванной активности и несущие уникальные узоры. Уникальность узора каждой из волн позволяет на удалении от источника сигнала узнать о его активности. При таком подходе хорошо объясняется сформулированное Мак-Каллоком и Питсом несоответствие между объемом зон коры и количеством волокон в пучках, проецирующих информацию от них на другие зоны.
Читать дальше →
Всего голосов 53: ↑45 и ↓8+37
Комментарии21

Личные финансы на основе GnuCash

Время на прочтение3 мин
Количество просмотров57K
Добрый день хабра-юзер! Месяца полтора назад, может более, я как-то в комментариях упомянул, что веду домашний учет финансов на основе GnuCash. В течении следующей недели мне пришло несколько личных сообщений с просьбой описать процесс сего действия. Скажу сразу, при написании статьи поймал себя на мысли, что легче написать книгу, чем статью по личным финансам. После месяца обдумывания решил выделить 3 основных момента.
  • В статье не будет описания алгоритма работы с программой, но далее, я дам ссылки на достаточно подробные статьи. Если вы никогда не работали с этой программой советую до прочтения статьи ознакомиться с ними. www.ashep.org/tag/gnucash
  • Личные финансы во многом копируют учет финансов «услуг», поэтому эта статья будет полезна и начинающим предпринимателям. Ведение личных финансов, поможет узнать как правильно читать финансовую отчетность, и где часто происходят затыки искажающие её.
  • Личные финансы это монитор вашей деятельности, не более и не менее, это не панацея от всех болезней. Это достаточно кропотливый, нудный и постоянный процесс. Нельзя вести учет финансов урывками. Введёте мусор и в будущем будете анализировать мусор!

Читать дальше →
Всего голосов 25: ↑17 и ↓8+9
Комментарии37

Логика мышления. Часть 3. Персептрон, сверточные сети

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


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

Персептрон


В машинном обучении разделяют два основных подхода: обучение с учителем и обучение без учителя. Описанные ранее методы выделения главных компонент – это обучение без учителя. Нейронная сеть не получает никаких пояснений к тому, что подается ей на вход. Она просто выделяет те статистические закономерности, что присутствуют во входном потоке данных. В отличие от этого обучение с учителем предполагает, что для части входных образов, называемых обучающей выборкой, нам известно, какой выходной результат мы хотим получить. Соответственно, задача – так настроить нейронную сеть, чтобы уловить закономерности, которые связывают входные и выходные данные.
Читать дальше →
Всего голосов 62: ↑54 и ↓8+46
Комментарии20

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

Время на прочтение7 мин
Количество просмотров252K
Чем вы занимаетесь большую часть своего рабочего дня? Скорее всего, создаёте или редактируете информацию. И у многих из вас эта информация — тексты: программный код, конфигурационные файлы, письма, строчки чатов и всё тому подобное.
Хотите создавать их быстрее и при этом расходовать на ввод текста меньше внимания? Я расскажу вам несколько эффективных способов увеличить производительность при работе с главным инструментом в этом деле — QWERTY-клавиатурой.

Сомневаетесь, стоит ли тратить на это время? Вспомните — за 30 лет в мире ПК изменилось всё, но клавиатура осталась такой же. Альтернативные способы ввода текста — распознавание речи, письма, жестов, «птичьих» языков (привет, граффити!), аккордные клавиатуры — не сработали и не стали популярными — и, вероятнее всего, ещё очень долго вы будете всё так же вводить тексты с клавиатуры.
Читать дальше →
Всего голосов 126: ↑98 и ↓28+70
Комментарии226

Поколение «маленьких императоров» подтверждает стереотипы

Время на прочтение3 мин
Количество просмотров9.3K
Для начала необходимо пройти небольшой опрос.
А теперь подробности.
Всего голосов 49: ↑13 и ↓36-23
Комментарии26

GTD на кухне: чем накормить голодного программиста

Время на прочтение9 мин
Количество просмотров56K
imageИтак, как и обещал в первой части, продолжаем упрощать бытовую жизнь хабражителя. Сегодня 8 марта (кстати, девушки, поздравляю!) и части мужчин хочется порадовать своих женщин и освободить их от «рабского труда» на кухне, а другой части – приготовить для себя не традиционные пельмени\вареники\сосиски, а что-то посущественней.
Вот несколько проверенных рецептов, которые пригодятся и первым, и вторым.

Осторожно, много картинок. Голодным не входить!
Читать дальше →
Всего голосов 220: ↑168 и ↓52+116
Комментарии214

Мы писали, мы писали или что делать когда нас настигает туннельный синдром

Время на прочтение12 мин
Количество просмотров323K
Если вы читаете эти строки, то будет вполне естественно предположить, что вы проводите за компьютером по крайней мере несколько часов в день, а то и больше. Такой режим работы привносит с собой достаточно сильную нагрузку на наши руки, которая может вызвать боли в кистях, запястьях и пальцах. Такие боли вызваны так называемым «туннельным синдромом» (синдромом карпального канала, кистевым туннельный синдром, carpal tunnel syndrome) — хроническим заболеванием.

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

Как развивается туннельный синдром и что мы при этом чувствуем


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

Читать дальше →
Всего голосов 136: ↑131 и ↓5+126
Комментарии112

Чудесное введение в программирование

Время на прочтение6 мин
Количество просмотров40K
Доброго времени суток хабр.

Хотел бы преподнести на суд общественности перевод одной чудесной статьи, в которой описаны базовые принципы программирования. Пару слов о том — зачем собственно это все и кому это надо? Отвечаю — последние несколько месяцев я, сам начинающий программист, активно пытаюсь обучать ребят из других сфер. В этом нелегком труде мне приходится шерстить интернет в поисках в первую очередь интересных материалов, чтобы разбить их стереотипы насчет того что код — это скучно и нудно. К моему глубокому сожалению, таких материалов не так уж много. Я уверен, есть огромное количество новичков, которые регулярно читают хабр и эта статья будет им крайне интересна и полезна.
Читать дальше →
Всего голосов 72: ↑50 и ↓22+28
Комментарии46

Жизнь разработчика (в картинках)

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

Когда я показываю босу, что окончательно пофиксил баг



Когда проджект-менеджер входит в офис



Читать дальше →
Всего голосов 884: ↑700 и ↓184+516
Комментарии132

Околоайтишная развлекательная литература

Время на прочтение2 мин
Количество просмотров49K
Каждый представитель любой IT-профессии, не важно, программист ли он, системный администратор, да кто угодно — читать любит. Иначе вряд ли бы он пошел в эту профессию, с бесконечными статьями и документациями) Но книги — это не только источник знаний и чужого опыта, это ещё и отличное развлечение. И пусть на календаре суббота, по функциональным параметрам сегодня самая настоящая пятница, а потому предлагаю поделиться в комментариях вашими любимыми развлекательными книгами и рассказами об ITшниках и для ITшников!

Под катом — 5 первых названий с описаниями от меня, для затравки.
update 1. В комментариях ещё 10+ названий.
Читать дальше →
Всего голосов 64: ↑50 и ↓14+36
Комментарии63

Как следует относится к компьютерным играм

Время на прочтение4 мин
Количество просмотров17K
Иногда меня спрашивают, как я отношусь к компьютерным играм. И почти всегда люди, которые интересуются моим мнением – либо ярые ненавистники компьютерных игрушек, либо законченные задроты «весьма увлекающиеся геймеры»…

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

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

Итак, с чем можно сравнить компьютерные игры? Долго размышляя над этим вопросом я пришёл к выводу, что

к компьютерным играм надо относится так же, как к алкоголю.

Я так решил, потому что и у компьютерных игрушек и у алкоголя огромное количество общих свойств. Давайте перечислим их:
Читать дальше →
Всего голосов 116: ↑27 и ↓89-62
Комментарии86

Как стать богатым айтишником — продолжение от другого автора

Время на прочтение3 мин
Количество просмотров144K
Не скажу, что полностью несогласен с вдохновившей меня статьёй, не буду придираться к трактовке терминов «актив» и «пассив», в конце концов, мы не в бухгалтерии. Черкну лишь несколько строк в подтверждение (а, скорее, и в подкрепление) позиции её автора.

UPD: Как стать успешным айтишником



Надеюсь, никто не будет несогласен с мыслью, что ради светлого будущего придется совершенно безвозвратно проститься с десятью и более годами беззаботной жизни, которые уйдут на шлифовку опыта, зарабатывания тех же самых активов. Не соглашусь только с одной вещью, требующей расширительного толкования:
Читать дальше →
Всего голосов 132: ↑96 и ↓36+60
Комментарии103

Знаки доверия, контрольные закупки и отзывы от реальных покупателей как инструменты интернет-продавца

Время на прочтение5 мин
Количество просмотров7.3K
В условиях Интернета и социальных сетей трудно «формировать» образ интернет-продавца — информация идет потоком. Однако можно влиять на ситуацию — дать возможность толпе опереться не только на свои оценки. А на чьи еще оценки можно опереться? На экспертные, в первую очередь. Можно еще сделать ставку на оценки из липовых отзывов — но метод так себе! На какие еще? Ответьте сами.

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

Читать дальше →
Всего голосов 21: ↑17 и ↓4+13
Комментарии16
1
23 ...

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность