Как стать автором
Обновить
3
0

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

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

Отправка и получение SMS с помощью Laravel и Nexmo

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

В этом кратком руководстве от Фила Леггеттера мы рассмотрим, как отправлять и получать SMS в приложении Laravel. Мы реализуем эту возможность, используя Nexmo — платформу облачных коммуникаций, которая предлагает API-интерфейсы для инициализации телефонных номеров, отправки и приема SMS (что мы и будем использовать), а так же для совершения звонков.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии18

Полезные трюки PostgreSQL

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


В мануале есть всё. Но чтобы его целиком прочитать и осознать, можно потратить годы. Поэтому один из самых эффективных методов обучения новым возможностям Postgres — это посмотреть, как делают коллеги. На конкретных примерах. Эта статья может быть интересна тем, кто хочет глубже использовать возможности postgres или рассматривает переход на эту СУБД.
Читать дальше →
Всего голосов 55: ↑55 и ↓0+55
Комментарии28

Один пиксель вместо тысячи слов

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


Пару месяцев назад, отдыхая от реализации новых возможностей вроде q_auto и g_auto, я прикалывался в нашем командном чате по поводу того, как различные форматы хранения изображений будут сжимать однопиксельную картинку. В ответ Orly, редактор блога, попросила меня написать пост об этом. Я сказал: «Конечно, почему бы и нет. Но это будет очень короткий пост. Ведь что можно рассказать про один пиксель».

Похоже, я был сильно неправ.

Что можно сделать с одним пикселем?


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

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


Сломанная картинка
Читать дальше →
Всего голосов 54: ↑50 и ↓4+46
Комментарии34

«Молчание – золото»: 13 вещей, которые не стоит говорить разработчикам и тестировщикам

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


/ фото Sistema Bibliotecario Vimercatese CC

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

Работа в команде – ответственное занятие, поскольку в этом случае люди отвечают не только за себя, но и за окружающих, они общаются, помогают друг другу. Как бы это ни было банально, ключом к продуктивному общению между людьми всегда является вежливость и взаимоуважение. Однако все же есть определенный список фраз, которые – даже когда они звучат вежливо и корректно – не стоит употреблять в разговоре с разработчиками и тестировщиками, если вы их коллега, заказчик, «владелец» или руководитель проекта.
Читать дальше →
Всего голосов 68: ↑58 и ↓10+48
Комментарии44

Отказоустойчивый кластер Master-Slave на PostgreSQL

Время на прочтение9 мин
Количество просмотров119K
Приветствую, хаброжители!
В этой статье я хочу поделиться опытом развертывания кластера Master-slave на СУБД PostgreSQL. Отказоустойчивость достигается с помощью возможностей pgpool-II (failover, online recovery).
pgpool — это прекрасное средство для масштабирования и распределения нагрузки между серверами и, думаю, немногие знают о возможностях автоматического создания failover на ведомом сервере при отказе ведущего и как добавить новые мощности в уже работающий кластер без отключения всего кластера.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии18

Интернет магазин с нуля. Часть 1: Начало

Время на прочтение6 мин
Количество просмотров76K
В первую очередь эта статья предназначена тем, кто планирует или только рассматривает вариант запуска своего бизнеса.
Оглядываясь на 15 летний опыт работы в IT c бизнес процессами, решил, написать данный мануал. Это будет серия статей, так как материал выходит объемистый.

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



Открыт для конструктивной критики и буду рад оказать помощь, если она вам потребуется.

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

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

Читать дальше →
Всего голосов 18: ↑16 и ↓2+14
Комментарии76

Битовые операции в PHP на примерах

Время на прочтение3 мин
Количество просмотров87K
Навеяно статьей об обработке критических ошибок в PHP. Обратил внимание, что несмотря на то, что коды ошибок в PHP специально заточены под битовые операции, тем не менее, что в примерах статьи, что в комментариях, для проверки кодов ошибок используются обычные операторы сравнения.

Например, встречались такие варианты:
if ($error['type'] == E_ERROR || $error['type'] == E_PARSE || $error['type'] == E_COMPILE_ERROR){…}
или
if(in_array($error['type'], array(E_ERROR, E_PARSE,  E_COMPILE_ERROR)) {…}

В связи с этим решил написать небольшую статью о битовых операциях с примерами их использования.
Читать дальше →
Всего голосов 242: ↑203 и ↓39+164
Комментарии162

Интернет магазин с нуля. Часть 2: Бизнес модель и некоторые правила

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

Часть первая.



Продолжаем подробный разбор магазиностроительства из разряда e-commerce.



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



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

Полугодовой рейтинг AnTuTu перераспределил места в 10-ке смартфонов-лидеров

Время на прочтение2 мин
Количество просмотров56K
Разработчики популярного бенчмарка для мобильных устройств AnTuTu предоставили вниманию заинтересованной публики результаты обновленного рейтинга 10-ки самых производительных смартфонов первой половины 2016 года. Рейтинг был составлен на основе результатов тестирования аппаратов с использованием шестой версии приложения Antutu Benchmark 6.0 для временного интервала с 1 января по 30 июня 2016 года.

image
Подробнее
Всего голосов 16: ↑13 и ↓3+10
Комментарии36

Liddiard Wheels: всенаправленные колеса для автомобиля, берущие функцию парковки любой сложности на себя

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


Водитель из Канады по имени Уильям Лиддард (William Liddiard) разработал колеса нового типа, которые могут самостоятельно перемещать автомобиль в любом направлении. Двигатель автомобиля не используется. Работая водителем крупных транспортных средств, Лиддард неоднократно сталкивался со сложностью выполнения автомобильных маневров на ограниченном пространстве. С этой проблемой знакомы практически все водители, но он сам решил найти способ решения вопроса. К практической реализации своей идеи водитель приступил 8 лет назад. Уильям вложил в разработку колес $60000 личных средств. Свое изобретение автор назвал в честь самого себя: Liddiard Wheels. Сейчас идет обкатка новых колес, они испытываются в полевых условиях. Демонстрацию их возможностей автор снял на видео (второй по счету ролик в посте).

Всенаправленные колеса — далеко не новая идея. Первый патент на omni-колесо (omni-directional wheels, еще одно название всенаправленных колес) был получен в 1919 году. В автомобильной промышленности такие колеса практически не используются. В основном, их применяют при создании движущихся шасси роботов, кресел-колясок для инвалидов, портативных мобильных систем. Уильям Лиддард использовал разработанное им всенаправленное колесо на практике. Он оснастил своими колесами небольшой легковой автомобиль Toyota Echo.
Читать дальше →
Всего голосов 20: ↑15 и ↓5+10
Комментарии123

Делаем ноутбук на Raspberry Pi

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

Портативный компьютер RasPSION

За четыре года с момента выхода Raspberry Pi что только не делали из этого маленького одноплатного компьютера — маленькие видеомагнитофоны, игровые консоли, автомобильные навигаторы, музыкальные плееры и многое другое. Но самая очевидная мысль — дополнить Raspberry Pi экраном, клавиатурой и аккумулятором, чтобы получился ультрапортативный ноутбук (его можно назвать нетбук или даже карманный компьютер).

Например, один экземпляр Raspberry Pi попал в руки японского моддера nokton35mm, который изготовил мини-компьютер RasPSION в стиле портативных компьютеров Psion конца 90-х.
Читать дальше →
Всего голосов 23: ↑18 и ↓5+13
Комментарии36

ProxySQL — еще один mysql-proxy

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

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии10

5 способов быстро победить ступор программиста

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

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

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

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

Давайте рассмотрим несколько наиболее распространенных причин кризисов программиста, и разберем, как с ними бороться.
Читать дальше →
Всего голосов 39: ↑27 и ↓12+15
Комментарии39

35 полезных инструментов по теме виртуализации

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


Сегодня слово «виртуализация» у всех на слуху, а технологии виртуализации становятся одним из основных компонентов ИТ-инфраструктуры организаций. Кстати, сегодня вышел наш пост, в котором мы поделились своим опытом создания провайдера виртуальной инфраструктуры на примере 1cloud.

Мы решили продолжить работу с этой темой и составить подборку инструментов, на которые стоит обратить внимание всем, кто имеет отношение к виртуальной инфраструктуре. Далее будет приведена лишь малая часть существующих инструментов, расположенных в случайном порядке.
Читать дальше →
Всего голосов 22: ↑18 и ↓4+14
Комментарии7

Внедрение CRM: как не быть близким к провалу

Время на прочтение12 мин
Количество просмотров25K
Наверняка многие из вас видели в интернете фотогалереи с заброшенными торговыми центрами, огромными и некогда роскошными. Впечатляющее зрелище, особенно для бизнесмена. Но первая мысль вовсе не о том, сколько денег, инвестированных в развитие, пропало. Она о том, почему это произошло. Да, есть фактор влияния структурных сдвигов экономики, есть и «вина» онлайн-торговли. Но главное — это неумение вовремя перестроиться, адаптироваться, изменить бизнес-модель. Причём не отказываясь от существующей, а встраивая её в новые условия.
Та же история может случиться с проектом внедрения CRM: система простаивает, компания меняет вендора, выбирает более дорогую систему, которая снова простаивает… Замкнутый круг. А между тем, причины неудачи довольно линейны — и в ваших руках сделать внедрение CRM успешным. Делимся опытом, как.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии15

Импортируем DXF чертеж в программе на Java, наступая на все грабли этого «простого» формата

Время на прочтение7 мин
Количество просмотров18K
AutoCAD и подобные ему САПР давно уже стали стандартом в области проектирования, и неудивительно что таким же стандартом стали широко используемые в них форматы файлов DWG/DXF. Так что если вы разрабатываете какое-то решение для архитекторов и проектировщиков, то умение работать с этими форматами (ну или хотя бы с одним из них) — must have фича вашего продукта.



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

В общем под катом — перечисление граблей и решений, которые не удалось нагуглить и пришлось добывать полуночными бдениями над чертежами.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии4

Az.js: JavaScript-библиотека для обработки текстов на русском языке

Время на прочтение8 мин
Количество просмотров28K
Как чуден и глубок русский курлык
Генератор постов

Обработка естественного языка (natural language processing, NLP) — тема, на мой взгляд, очень интересная. Во-первых, задачи тут чисто алгоритмические: на вход принимаем совершенно примитивный объект, строчку, а извлечь пытаемся вложенный в него смысл (ну или хотя бы частичку смысла). Во-вторых, необязательно быть профессиональным лингвистом, чтобы решать эти задачи: достаточно знать родной язык на более-менее приличном уровне и любить его.

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

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

Конечно, хочется сделать что-нибудь поинтереснее. Беда в том, что модные сейчас нейросети не очень-то применимы здесь: им нужно много ресурсов, большую обучающую выборку, а в браузере у пользователя соцсети всего этого нет. Поэтому я решил изучить вопрос работы с текстами с помощью алгоритмов. К сожалению, готовых инструментов для работы с русским языком на JavaScript найти не удалось, и я решил сделать свой маленький велосипед.
Читать дальше →
Всего голосов 54: ↑54 и ↓0+54
Комментарии30

Pillow-SIMD

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

Ускорение операций в 2.5 раза по сравнению с Pillow и в 10 по сравнению с ImageMagick



Pillow-SIMD — это «форк-последователь» библиотеки работы с изображениями Pillow (которая сама является форком библиотеки PIL, ныне покойной). «Последователь» означает, что проект не становится самостоятельным, а будет обновляться вместе с Pillow и иметь ту же нумерацию версий, только с суффиксом. Я надеюсь более-менее оперативно выпускать версии Pillow-SIMD сразу после выхода версий Pillow.


Почему SIMD


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


  1. Можно использовать более хорошие алгоритмы, которые дают такой же результат.
  2. Можно сделать более быструю реализацию существующего алгоритма.
  3. Можно подключить больше вычислительных ресурсов для решения той же задачи: дополнительные ядра CPU, GPU.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии5

Как я программирую на Python

Время на прочтение1 мин
Количество просмотров40K
Часто с началом нового проекта программист не в состоянии увидеть полную картину — он не знает с чего начать, где получить информацию, сколько ее получить, при этом есть шанс засесть за документацией надолго пока не пропадет желание что-либо делать. Я относительно часто делаю проекты «для души» в ранее незнакомых областях, например, программировал микроконтроллеры, делал свой segway, проектировал на ПЛИС свой микропроцессор, делал плагины под Counter-Strike, софт к купюроприемникам и другие проекты, в которых на старте был абсолютным нулем.



А недавно...
Всего голосов 40: ↑34 и ↓6+28
Комментарии21

Мастерство программирования

Время на прочтение4 мин
Количество просмотров11K
image

Кент Бек — разработчик программного обеспечения, создатель таких методологий разработки ПО как экстремальное программирование (XP) и разработка через тестирование (TDD); в данный момент работает на Facebook. Вашему вниманию предлагается перевод набросков идей о том, как можно было бы сделать свою работу эффективнее. Разделение программистов на мастеров и подмастерьев, используемое на протяжении статьи, взято Кентом Беком из книги «Программист-прагматик» Эндрю Ханта и Дэвида Томаса.

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

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

Основной мотив набросков — раскрытие потенциала вашего мозга. Подмастерье учится решать большие задачи при помощи решения нескольких мелких задач разом. Мастер же учится решать еще большие задачи, чем подмастерье, при помощи решения меньшего количества задач разом. Важная часть мудрости здесь состоит в том, что разбивка задач должна осуществляться таким образом, чтобы интеграция независимых решений была бы меньшей проблемой, чем простое решение всех задач вместе.
Читать дальше →
Всего голосов 22: ↑13 и ↓9+4
Комментарии1

Информация

В рейтинге
Не участвует
Откуда
Липецк, Липецкая обл., Россия
Дата рождения
Зарегистрирован
Активность