Pull to refresh
35
0
Konstantin Coocheenin @coocheenin

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

Send message

Определение кодировки текста в PHP — обзор существующих решений плюс еще один велосипед

Reading time7 min
Views104K
Столкнулся с задачей — автоопределение кодировки страницы/текста/чего угодно. Задача не нова, и велосипедов понапридумано уже много. В статье небольшой обзор найденного в сети — плюс предложение своего, как мне кажется, достойного решения.

1. Почему не mb_detect_encoding() ?


Если кратко — он не работает.
Подробнее - под катом
Total votes 115: ↑104 and ↓11+93
Comments82

Язвы и грабли CSV и Excel: проблемы и решения

Reading time11 min
Views383K
CSV является стандартом де-факто для связи между собой разнородных систем, для передачи и обработки объемных данных с «жесткой», табличной структурой. Во многих скриптовых языках программирования есть встроенные средства разбора и генерации, он хорошо понятен как программистам, так и рядовым пользователям, а проблемы с самими данными в нем хорошо обнаруживаются, как говорится, на глаз.

История этого формата насчитывает не менее 30 лет. Но даже сейчас, в эпоху повального использования XML, для выгрузки и загрузки больших объемов данных по-прежнему используют CSV. И, несмотря на то, что сам формат довольно неплохо описан в RFC, каждый его понимает по-своему.

В этой статье я попробую обобщить существующие знания об этом формате, указать на типичные ошибки, а также проиллюстрировать описанные проблемы на примере кривой реализации импорта-экспорта в Microsoft Office 2007. Также покажу, как обходить эти проблемы (в т.ч. автоматическое преобразование типов Excel-ом в DATETIME и NUMBER) при открытии .csv.

Читать дальше →
Total votes 88: ↑83 and ↓5+78
Comments42

Raspberry Pi Zero

Reading time1 min
Views25K
На твиттере засветилась новая плата «Raspberry Pi Zero»

Коротко


Из нового только маленький размер и неудобные порты (mini-HDMI и USB-OTG) плюс отсутствие разъемов под плоские шлейфы камеры, дисплея, аудио. Видеоразъем теперь в виде нераспаянных пятаков. Стоимость $5.
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments13

DIY PowerBank на 17000 честных миллиампер-часов

Reading time3 min
Views32K
Наступила зима, если вдруг кто не заметил, а это означает, что через час использования телефона на улице он превращается в тыкву. Для предотвращения оного события издревле используются внешние аккумуляторы, ака PowerBank, ака «банки».

Но с нынешним курсом доллара купить хорошую банку стало несколько, эм, рискованно из-за угрозы амфибиотропной асфиксии, ибо только один хороший аккумулятор типа 18650 стоит больше 8 долларов. А для действительно ёмкой банки их надо 6. Плюс кейс — ещё прибавить долларов 8-12. Итого ~60 долларов.

Да, есть китайские магазины, которые торгуют типа оригинальными Xiaomi долларов за 25. Но вся проблема в том что они именно что «типа оригинальные», а что на самом деле приедет — не известно никому.


задача дешёвых китайских банок заключается в том чтобы показать вот-такенные цифры, а засада в том что они набиты отвратительного качества аккумуляторами.
Читать дальше →
Total votes 23: ↑19 and ↓4+15
Comments31

Работа iOS App в фоновом режиме

Reading time4 min
Views45K
Стояла задача, чтобы программа отправляла через web socket текущие координаты по заданному пользователем интервалу. К тому же, программа должна работать в фоне и если пользователь или iOS по какой то причине её выгрузит из памяти, то желательно чтобы она перезапустилась и продолжила работу в фоне.
Поставленную задачу надо решить только средствами iOS без изменения серверной части (никаких Push Notifications).

Отправлять координаты по таймеру когда программа свернута в фон не составляет проблемы, для этого можно использовать background location mode для получения координат и long-running tasks для таймеров.

Но так как в iOS нет такой прелести как Android Background Services, то если вручную завершить программу, код перестает выполняться. Потому основная сложность заключается в том, как максимально быстро запустить программу в фоне, чтобы она продолжила выполнять свою задачу дальше, если её по каким то причинам выгрузила из памяти iOS, или если пользователь перезагрузил устройство, или если он вручную «убил» программу.

Теперь о том, что помогло решить данную задачу в приемлемом варианте:
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments28

Риски и проблемы хеширования паролей

Reading time11 min
Views38K
Безопасность всегда была неоднозначной темой, провоцирующей многочисленные горячие споры. И всё благодаря обилию самых разных точек зрения и «идеальных решений», которые устраивают одних и совершенно не подходят другим. Я считаю, что взлом системы безопасности приложения всего лишь вопрос времени. Из-за быстрого роста вычислительных мощностей и увеличения сложности безопасные сегодня приложения перестанут завтра быть таковыми.

Прим. перев.: для более полной картины здесь вас также будет ждать перевод Hashing Passwords with the PHP 5.5 Password Hashing API, на которую автор ссылается в статье.
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments42

Интервью: Брайан Керниган и Алан Донован

Reading time12 min
Views21K
image


В этом году Брайаном Керниганом, автором классического труда «C Programming Language», в соавторстве с Аланом Донованом была написана книга «The Go Programming Language», которой, судя по всему, де-факто суждено стать одним из официальных источников первоначальных знаний по языку — не в последнюю очередь благодаря тому, что книга создавалась под пристальным контролем со стороны создателей самого языка. Электронная версия книги на английском языке выходит только сегодня — причиной нескольких переносов было исправление неточностей, допущенных в первом тираже книги; качественный перевод на русский язык ожидается не раньше марта 2016 года.

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


Несколько недель назад все желающие имели возможность задать вопросы Алану Доновану и Брайану Кернигану на тему их совместного труда, книги «The Go Programming Language». Slashdot отобрал самые популярные вопросы читателей и получил на них ответы.
Читать дальше →
Total votes 44: ↑39 and ↓5+34
Comments40

Смерть рака: что мешает в борьбе со страшным недугом

Reading time6 min
Views61K
В 2009 году Винсенту ДеВита, бывшему директору Национального института онкологии США и профессору медицины в Онкологическом центре на факультете медицины Йельского университета, поставили диагноз: рак простаты. Обычно при этом заболевании назначают гормональную терапию, но де-Вита повезло — его коллеги провели ему операцию, которая выходит за рамки стандартного лечения, и это спасло ему жизнь.

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

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


Читать дальше →
Total votes 40: ↑37 and ↓3+34
Comments63

Восстанавливаем права доступа под Mac OS X — EL Capitan

Reading time2 min
Views34K
При переходе на El Capitan ряд пользователей столкнулся с проблемами прав доступа — неработающее sudo, некорректная timezone, etc…

Корнем зла является урезанный доступ к /private/etc.

Для начала, вам, стоит проверить свой. Откройте Terminal (это можно сделать через Spotlight) и введите ls -la /private.

$ ls -la /private
total 0
drwxr-xr-x@   6 root  wheel   204 Oct  1 10:20 .
drwxr-xr-x   33 root  wheel  1190 Nov  4 15:56 ..
drwxr-xr-x  106 root  wheel  3604 Nov 13 18:04 etc
drwxr-xr-x    2 root  wheel    68 Aug 23 02:28 tftpboot
drwxrwxrwt   14 root  wheel   476 Nov 16 10:55 tmp
drwxr-xr-x   25 root  wheel   850 Nov  4 17:02 var
$ 

Вот так «drwxr-xr-x» и должны выглядеть права на etc. Если они выглядят больше похожими на «drwx-----», то вам к нам.
Читать дальше →
Total votes 22: ↑12 and ↓10+2
Comments13

О переводе проекта с Objective-C на Swift

Reading time9 min
Views18K
Здравствуйте, уважаемые читатели.

Среди самых животрепещущих тем, которые поднимались на наших издательских советах в последние полгода, особое место занимает язык программирования Swift. При огромном интересе к нему со стороны западных разработчиков и при подлинном изобилии книг на эту тему язык пока кажется довольно сырым. Поэтому, прощупывая почву насчет востребованности нового языка, предлагаем познакомиться с постом великолепного Мэтта Нейбурга, автора книги «Programming iOS 8: Dive Deep into Views, View Controllers, and Frameworks». Автор подробно описывает перевод приложения на новый эппловский язык, убедительно доказывая: «глаза боятся — руки делают», а гибридная сборка Objective-C и Swift отнюдь не напоминает смесь французского с нижегородским.

Приятного прочтения и плодотворных экспериментов.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments8

Чистая архитектура в Go-приложении. Часть 1

Reading time9 min
Views46K
От переводчика: данная статья написана Manuel Kiessling в сентябре 2012 года, как реализация статьи Дядюшки Боба о чистой архитектуре с учетом Go-специфики.



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

В отличие от первой статьи, в названии внутреннего слоя здесь фигурирует Domain вместо Entity (Сущность) и при переводе я так и оставил этот термин, чтобы избежать путаницы, поскольку он фигурирует так же и в исходном коде примеров. Так же я перевел Domain как Домен, поскольку на мой взгляд этот термин тут имеет более широкую смысловую нагрузку.

В данной части будет описана общая концепция и работа с внутренним слоем.
Итак, начнем ...
Total votes 35: ↑27 and ↓8+19
Comments11

Как писать Go код, который легко портируется

Reading time6 min
Views17K
(Перевод статьи с советами о написании по-настоящему кросс-платформенного кода в Go)
Go великолепно приспособлен для работы с разными платформами. Моя основная среда разработки на Windows, но я всегда работаю с Linux-системами. Поэтому я естественным образом пытаюсь избегать вещей, которые могут создать проблемы.



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

Недавно я помогал делать Windows-версию очень приятной программы для бекапов, так как хотел изучить альтернативы к zpaq, очень хорошему архиватору с журналированием и фокусом на сжатие. Во время портирования я отметил несколько вещей, которые могут быть полезны другим.
Читать дальше →
Total votes 51: ↑36 and ↓15+21
Comments9

Почему Go — это хорошо продуманный язык программирования

Reading time9 min
Views44K
В недавнем посте с критикой Go, который был выдан за перевод, пользователь tucnak, помимо избыточной фамильярности в адрес Роба Пайка, поднял несколько интересных моментов языка. Поскольку формат статьи предполагал, увы, не желание разобраться в теме, а разжечь холивары, предлагаю в этой статье пройтись по озвученным «проблемам» и понять, о чём же речь на самом деле, и что же заставляет современные компании выбирать Go.

image
Читать дальше →
Total votes 156: ↑92 and ↓64+28
Comments362

Возвращение эпохи винила

Reading time3 min
Views10K


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

Сегодня мы взглянем на то, что стоит за возвращением эпохи винила.
Читать дальше →
Total votes 19: ↑14 and ↓5+9
Comments25

HackedSim. Звонок с любого номера — вымысел или реальность?

Reading time11 min
Views299K
imageНа прошлой неделе на Хабре появилась статья про HackerSIM с интригующим названием и многообещающем содержанием. Суть статьи сводилась к следующему: за существенную сумму, на порядок превышающую стоимость обычной sim-карты, некие ребята предоставляют Вам свою sim-карту, которая позволяет «безопасно звонить с любого номера из любой страны с любым голосом на выбранные номера» (в кавычках потому, что здесь цитируется агрегация тезисов из ранее упомянутой статьи). Посмотрев комментарии, выяснилось, что к данной теме проявляется живой интерес, но ни у кого нет точного понимания, как это работает и работает ли вообще.

Немного подумав с коллегами, мы решили рассказать, как данная услуга осуществима в реальной жизни.
Читать дальше →
Total votes 55: ↑48 and ↓7+41
Comments37

Обзор Circuit Scribe: рисуем электронные схемы без проводов и макетных плат

Reading time5 min
Views16K


У вас в детстве был конструктор? Уверен, что да. Возможно, это был брутальный железный, с отвертками и ключами, или изысканный деревянный — для сборки домиков. Возможно, вам повезло и достался набор LEGO, а если не очень — то LEGO Duplo. Автору этого текста родители подарили электронный конструктор «Знаток» — набор с большим количеством деталей для создания электрических схем и с советами Андрея Бахметьева («Очумелые ручки»).
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments13

Fixitime Smart Watch — детские шпионские часы

Reading time3 min
Views15K
Помните, как в детстве мамы звали нас домой, в то время как мы искали приключения в соседских дворах? Сплошные волнения и беспокойства. Так вот, в настоящее время, в мире интеллектуальных технологий и GPS-гаджетов возможность отслеживать местонахождение своего ребенка в школе, во время занятий в кружках и на прогулках дает современным родителям одновременно ключ к контролю и спокойствию.

Поэтому разработчики телефона-часов с функцией трекера "Elari FixiTime” позаботились о том, чтобы родителям было удобно поддерживать связь с ребенком, а детям, в свою очередь, — интересно и легко пользоваться часами-телефоном как настоящим «шпионским гаджетом», внешний вид которого отражает историю известного мультсериала «Фиксики», где человечки, живущие в технике не только чинят ее, но и помогают детям познавать принципы работы различных приборов.
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments11

Балансировка MySQL

Reading time2 min
Views20K
Это краткая заметка как настроить отказоустойчевый кластер с балансировкой нагрузки из 2 MySQL серверов. Исходные данные 2 свежеустановленных MySQL сервера. Необходимо настроить работу таким образом, что бы в нормальной ситуации запросы балансируются между MySQL серверами, в случае выхода из строя одного из MySQL серверов все запросы идут ко второму.

Читать дальше →
Total votes 21: ↑13 and ↓8+5
Comments4

go-e ONwheel превратит обычный велосипед в электротранспорт за считанные секунды

Reading time2 min
Views18K


На Kickstarter на днях появился новый интересный проект, цель которого — собрать средства (уже собрано больше, чем запрашивалось) на съемный электромотор для обычного велосипеда. Таким образом, за считанные секунды обычный велосипед можно преобразовать в электротранспортное средство. go-e ONwheel работает, только когда велосипедист крутит педали, помогая набирать скорость и тратить меньше сил на дорогу.

При желании go-e ONwheel можно снимать (дело нескольких секунд), и так же просто электромотор возвращается на место. В go-e ONwheel встроены специальные сенсоры, которые определяют активность велосипедиста. Если велосипедист крутит педали, мотор крутит заднее колесо.
Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments24

Простыми словами о цифровом и аналоговом звуке

Reading time14 min
Views18K


На очереди транскрипт десятого выпуска (22.05.2014) подкаста «Звук». В нем Дмитрий Кабанов беседует с Анатолием Дмитриевичем Арсёновым, к. т. н., физиком по образованию, экспертом в области IT и цифрового звука, инженером в компании F-Lab на тему цифрового и аналогового звука.

[Прослушать этот выпуск]

[Подробнее о подкасте]

Другие выпуски подкаста




Читать дальше →
Total votes 19: ↑13 and ↓6+7
Comments3

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity