• Если вы решили перейти с PHP на Python, то к чему следует подготовиться
    0
    Кому нужен ГИС, уходят на PostgreSQL/PostGIS. В MySQL с этим всё грустно.
  • Linux для планшета
    0
    touchegg заводит мультитач в программах, которые о его существовании не очень в курсе.
  • Паттерн для cоздания DSL на Scala для оперирования единицами измерения
    0
    А почему вы создаёте частоту на основе BigInt? Не лучше ли будет взять какой-нибудь тип с плавающей точкой?
  • Еще один способ сжатия CSS файлов
    +2
    Скажите, почему, если mail.ru экономит трафик, он не включает на своих серверах SPDY? Там, в конце концов, много вкусной компрессии и параллелизации из коробки.
  • Приближенное сравнение чисел в Haskell
    +2
    Потому в сравнениях для векторов зачастую используют именно квадрат расстояния.
  • Xargs: многообразие вариантов использования
    +4
    Перешёл с xargs на GNU Parallel — сильно быстрее во многих случаях, особенно на сложных операциях над файлами.
  • Точность ГЛОНАСС достигнет 60 см благодаря спутникам нового поколения
    +1
    В Android решили взять одну сигму, резко этим «улучшив» показатели относительно других приёмников: http://developer.android.com/reference/android/location/Location.html#getAccuracy()
  • Postgis тип данных Geometry на примере импортированных OpenStreetMap карт
    0
    Не путайте непроецированные угловые координаты в градусах и проецированные в EPSG:4326 (которая де-факто стандарт индустрии). Численно они равны, но в EPSG:4326 цифры означают декартовы x и y. Чтобы не было соблазна и быстрее выявлять ошибки в восприятии, некоторый софт (proj4/pyproj, например) принципиально хранит угловые координаты только в радианах.
  • Анализ дружеских связей VK с помощью Python. Продолжение
    0
    Есть люди, не входящие в vk/fb, обычно из-за них продлевают цепочку на два звена в обе стороны.
  • Лицензия для вашего open-source проекта
    +8
    Совершенно забыта самая правильная лицензия для тех, кто не знает, под какой лицензией выложить кусок кода — WTFPL:

    ru.wikipedia.org/wiki/WTFPL
  • Энтузиаст сконструировал самодельный 8-битный процессор в Minecraft
    0
    Очень странный ассемблер, можно было бы и SHL/SHR оставить для сдвигов влево-вправо, и не называть их «делением на 2» и «умножением на 2».
  • Алгоритмы устранения ложных и избыточных данных в GPS-потоке
    0
    1) расстояние между двумя позициями на сфере считается напрямую, gis-lab.info/qa/great-circles.html — переход в UTM создаёт проблемы с масштабом на краю зоны, и зачем-то ограничивает область применимости вашего устройства.

    2) сильно меняется — это по косинусу. cos(lat) и cos^2(lat) — множители, которые позволяют корректно считать расстояния/площади для небольших изменений по широте. Между двумя измерениями GPS-трекера широта меняется незначительно, если только вы не делаете что-то из аэрокосмической области — но тогда у вас и чипы будут другими.

    Заходите по четвергам в минский хакерспейс на день открытых дверей, порисуем на доске.
  • Алгоритмы устранения ложных и избыточных данных в GPS-потоке
    0
    Скажите, у вас в компании практикуют код-ревью?
  • Алгоритмы устранения ложных и избыточных данных в GPS-потоке
    0
    Да понятно, что Дуглас-пойкером давить — тоже вариант. Но у меня есть кучка треков, на которых узелки так не давятся :)
  • Алгоритмы устранения ложных и избыточных данных в GPS-потоке
    +8
    Вообще, тема не раскрыта.

    Топик называется «Алгоритмы устранения ложных и избыточных данных в GPS-потоке», а рассказано только про избыточные данные.

    Как фильтровать «узелки» на стоянках?
  • Алгоритмы устранения ложных и избыточных данных в GPS-потоке
    0
    Посмотрел исходник из аттача.

    Скажите, а зачем там переход в UTM вообще? Расстояния куда лучше считать напрямую из градусов координат.
  • Алгоритмы устранения ложных и избыточных данных в GPS-потоке
    +4
    >> (previous_sample.course — sample->course)*(previous_sample.course — sample->course) >= COURSE_LIMIT*COURSE_LIMIT)

    А как оно обрабатывает переход через 360 градусов?

    И положите исходники на гитхаб, что ли.
  • Как заставить данные говорить
    0
    И где?

    Помнится, не так давно кому-то захотелось пересчитать все рассчёты в пейперах на какую-то тему, и обнаружилось, что исходных данных нет у примерно 80% работ. Вернее, они есть, но «где-то у кого-то на флешке неизвестно где, если мы ещё не переписали поверх новой версией скрипта или не потёрли». А что, пейпер-то написан, делов-то, кто проверять будет.

    На данный момент у меня нет оснований верить ни единому слову из поста, потому что я даже не знаю, каким способом вы выщемливали из всего многообразия телефонные разговоры, например, и не приписали ли нечаянно к телефонным разговорам ещё что-нибудь.
  • Как заставить данные говорить
    +3
    А можно увидеть ваши исходные данные, набор трансформаций и нормализованный набор данных где-нибудь на github?
  • Comment from a drafted post.
  • Китай осуществляет MiTM-атаку на пользователей iCloud
    0
    Вы так говорите, как будто воровство с кредиток хуже, чем вмешательство в личную жизнь с идеологическими целями.
  • Записки junior-программиста: как получить первую работу
    +1
    Приходите в первую, работаете полгода, уходите, приходите во вторую. Или не приходите.
  • InterSystems Enterprise Manager
    0
    Скажите, как Enterprise Manager интегрируется с такими industry-standard средствами массового администрирования серверов, как chef и puppet?
  • Прямой доступ к классам Caché через REST, на примере DHTMLX Grid
    +2
    Postgres. Одна s. Я же не ленюсь проставлять é в Caché :)

    Привязка nginx — это всего лишь способ сменить протокол передачи данных с протокола БД на http, да расписать способы преобразования. Это можно заменить даже shell cgi-скриптом.

    Суть примера в том, что в базе есть всё для организации REST API, включая лёгкий парсинг и сериализацию json.
    В Caché, судя по статье, вырвиглазная комбинация всего подряд:
    — роуты http->function пишутся в XML-подобном стиле;
    — классы оборачиваются в C-like скобочки;
    — сам язык напоминает привет из детства (привет, qbasic и отмечание типа переменной %$@), только во много раз хуже (скажите, зачем в quit $$$OK аж трёхзначная сумма долларов?);
    — сериализация в json методом конкатенации строк, забытая всеми… везде?
    — конфигурация в окошках (я посмотрю, как вас будут любить админы, которые будут раскатывать 200 инстансов базы по серверам c помощью chef/puppet...)
    — метод GetGridData вообще пишет дебажные логи в не-json формате в выходной канал. Способов логирования ошибок система не предоставляет?

    Скажите, существуют ли вообще примеры не-говнокода на Caché? Пока что я таких не видел — в статьи-то на хабр, наверное, самое классное и вкусное пишется?

    (Кстати, спасибо за статью — в процессе написания комментария проверил, обнаружил, что геометрические типы в postgis не сериализовались в geojson, оставаясь в текстовом WKB, запилил и заслал патч из двух строчек.)

    Чтобы узнать, работает ли человек в InterSystems, достаточно пойти в профиль человека и найти строку «Работаю в InterSystems». Таковыми являются почти все авторы статей про Caché на хабре. Новости пишет только корпоративный аккаунт intersystems.
  • Прямой доступ к классам Caché через REST, на примере DHTMLX Grid
    +2
    «Доктор не мыл руки перед операцией, потому что в ней акцент делался на другом, на вырезании аппендицита.»

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

    Во всех современных системах сделать json-представление чего угодно значительно быстрее, проще и безопаснее через специально для этого созданные средства.
    Стилистика InterSystems Caché осталась в девяностых?
  • Прямой доступ к классам Caché через REST, на примере DHTMLX Grid
    +1
    Для того, чтобы сделать такое же в Postgres/nginx, нужно:

    — Написать запрос, вытаскивающий всё, что нужно, сразу же правильно упаковывающий в json, эскейпящий все значения и делающий хорошо:
    select array_to_json(array_agg(g.*)) from our_table g;
    

    — Написать конфиг nginx, который скажет, как раздать postgres по http:
    http {
        upstream database {
            postgres_server  127.0.0.1 dbname=test
                             user=test password=test;
        }
    
        server {
            location / {
                postgres_pass   database;
                postgres_query  "SELECT * FROM cats";
            }
        }
    }


    (пример утащен с https://github.com/FRiCKLE/ngx_postgres)

    ВСЁ.
    В этом примере:
    — формирование корректного json;
    — безопасность регулируется на двух уровнях: права доступа конкретного пользователя в postgresql, и права доступа к урлам на nginx;
    — формирование любой структуры данных автоматически — hstore / json / jsonb-поля в базе автоматически свернутся в своё правильное представление.

    Скажите, почему в системе, работающей и предлагающейся к использованию в 2014 году до сих пор нет средств простого сворачивания произвольной структуры в json, а разработчики (разработчики самой системы, сотрудники InterSystems) пользуются для её имитации конкатенацией строк?
  • Caché Native Access — работаем с нативными библиотеками в Caché
    0
    Advanced Message Queuing Protocol: www.amqp.org/ — международный стандарт для очередей сообщений.

    Пользуясь вашей терминологией: хотите знать больше, гуглите.
  • Caché Native Access — работаем с нативными библиотеками в Caché
    0
    В PostgreSQL планировщик запросов достаточно умён, чтобы в подавляющем большинстве случаев оптимизировать план запроса под ваши данные на основе статистики по таблицам, развернуть Join в другую сторону, выбрать правильный алгоритм join'а, и вообще «сделать хорошо». Ошибки редки и в большинстве своём чинятся чтением EXPLAIN (ANALYZE) от запроса, хлопаньем себя по лбу и высказыванием «вот я дурак» (обычно 1..10 минут).

    Что такое в случае Caché «оптимизировать SQL самостоятельно»? Какие инструменты кроме EXPLAIN / ANALYZE / auto_explain для этого могут быть в принципе нужны? Значит ли это, что при выборе Caché на самом деле у меня нет опции писать на SQL, и всё придётся переписывать на вендор-лоченом собственном языке, с которого просто некуда мигрировать?

    По поводу SQL и NoSQL: стандартная нынче архитектура высоконагруженной системы обычно включает в себя:
    — frontend, штука, которая очень быстро асинхронно общается с пользователем — пишется самостоятельно, иногда может выродиться в конфиг nginx;
    — cache, in-memory key-value хранилище с экспайрингом, обычно redis/memcache, хранящее наиболее популярные read-запросы к фронтенду (используется, когда у приложения большой read);
    — mq, брокер очередей сообщений — штука, которая занимается асинхронностью и распределением нагрузки по узлам, в которую фронтенд складирует write-запросы и прочие вызовы долгих процедур (используется, соответственно, при наличии большого потока на write; обычно rabbitmq / rq);
    — worker, который разгребает queue и выполняет все долгие записи и рассчёты, а зачастую и заполняющий кеш — пишется самостоятельно;
    — persistent storage, база данных-хранилка, в которой надёжно лежат все данные — вот тут уже кто во что горазд, postgresql / mysql / mongodb.

    Из комментариев ниже я понял, что Caché претендует на то, чтобы быть frontend и persistent storage. А что у него с кешем в памяти? Может ли Caché удобно и эффективно менеджить очередь сообщений (вообще, есть ли там понятие сообщений?)

    «Но мне вполне хватает Caché, чего не хватает сами делаем.» — пугающая фраза.
    Значит ли это, что при выборе Caché как базы я обречён становиться её разработчиком?
    Идут ли в комплекте с лицензией исходные тексты Caché?
    Значит ли это, что при использовании Caché у меня перестанет хватать времени на самообразование и я не смогу эффективно разрабатывать систему, потому что я не смогу брать готовые блоки и мне придётся всё переписывать заново?

    В хорошей high-load архитектуре вся фишка как раз в том и состоит — время на оптимизацию не тратится, кроме совсем критических перформанс-проседаний, которые уже считаются багами, «потому что один идиот заселектил всю таблицу и фильтрует её в коде».
    Пока что я вижу, что этот самый быдлокодерский кошмарный сон DBA в Caché считается подходом по умолчанию, и это сеет недоверие к продукту.
  • Как я писал свой «велосипед» для ротирования таблиц в Oracle и Postgre
    +5
    Скажите, а зачем переходить с бесплатного постгреса, в котором есть партишнинг, на оракл, который стоит денег и в котором нет партишнинга?
  • Caché Native Access — работаем с нативными библиотеками в Caché
    0
    «Для новичков в Caché» — вовсе не то же самое, что «для клинических идиотов», и вовсе не подразумевает отсутствия бекграундовых знаний в других технологиях и проблем, с которыми сталкиваются все, кто так или иначе реализует заявленные InterSystems фичи.

    У меня вполне конкретный список вопросов, не рассмотренных в обозримых интернетах, кратко озвученный ещё в самом первом комментарии, на который мне было предложено «пойти погуглить».
  • Caché Native Access — работаем с нативными библиотеками в Caché
    +1
    Хорошая статья.

    Суть: «всё, что угодно, можно представить в виде набора вложенных словарей».

    В общем-то, просто, очевидно и понятно.

    Непонятно, как этот словарь будет крутиться, когда в него положить пару миллионов значений, а потом достать?
    Что будет, когда мы захотим обновить половину значений в половине ключей на втором-третьем уровне вложенности?
    С какой стороны к этому прикручена транзакционность?
    Как оно будет хранить это всё на нескольких узлах, когда всё место на одном закончится?
    Как оно будет балансировать нагрузку на чтение-запись?

    В общем-то, самое интересное остаётся за кадром.
    А представленное в статье в питоне легко делается через d = json.load(file) / global d / json.dump(file, d), без всякого Caché.
  • Caché Native Access — работаем с нативными библиотеками в Caché
    +1
    Простите, но если главное в статье для новичков находится на семнадцатом нажатии PgDn из 48, то к качеству этой статьи у меня есть определённые претензии, которые hivemind хабра выражает проще — рейтинг поста — +1.

    Тем более, что из приведённой вами цитаты с зашкаливающим количеством умных слов мне совсем неясно, в чём отличие от Redis и его хранимок на lua.
  • Caché Native Access — работаем с нативными библиотеками в Caché
    +1
    Представляете, этот пост чуть менее, чем полностью, состоит из скриншотов мастеров, которые я увижу всего один раз, если вообще увижу. За деревьями не видно леса.

    И в комментах опять одни сотрудники InterSystems, и потерявшиеся нечаянно попавшие люди, ничего не знающие про Caché, вежливо намекающие, что ничего не поняли, но, может быть, круто. Правда, непонятно, как это может пригодиться в жизни.

    Но как пример того, что посты можно писать по-разному, и не обязательно в корпоративный блог — хорошо!
  • Google Web Mercator: неоднозначная система координат
    0
    В общем-то, вся суть сводится к чему:
    — геометрические операции следует выполнять на эллипсоиде;
    — отображать результаты можно как угодно.
  • Caché Native Access — работаем с нативными библиотеками в Caché
    +4
    Ура! Развёрнутый ответ!

    Как-то так и должен выглядеть вводный пост про то, что такое Caché и как его набирать с клавиатуры :)

    За пятнадцать лет успело смениться минимум три поколения программистов. Вы правда думаете, что кто-то читает статьи пятнадцатилетней давности? В лучшем случае — свежие их переводы :)

    Вот, когда напишете первый пост (а скелет вы уже написали) — есть сразу несколько вопросов на потом (нет, не нужно отвечать тут сейчас, напишите красивый отдельный пост):

    1. если Caché умеет работать, как редис — как это сделать? как писать ин-мемори без транзакций, в стиле r.get() / r.set()? как оно обходится с памятью? что будет, когда память кончится? как рассказать «убивай всё старое и не держи на него зла, ты кеш»? как экспайрить и продлевать время жизни записей?

    2. если Caché умеет косить под Postgres / SQL — как это использовать? как отличить Caché-[redis] от Caché-[postgres]? насколько реально взять какой-нибудь несложный движок/ORM и сходу запустить под Caché? Вот чисто ради примера — какой-нибудь простой Django app или Wordpress.

    3. если Caché умеет работать, как Mongo — интересно было бы почитать, как оно масштабируется. Не «запустите вот такую команду, чтобы смасштабировать на два сервера», а нормальные схемы, как происходит чтение, запись в репликах, куда пишется WAL и что происходит, когда сеть падает и вдруг Split-brain и merge-brain.

    И, ради бога, не используйте никому неизвестных маркетинговых термиров в статьях для новичков. «Вместе с Caché поставляется технология NLP iKnow и технология OLAP DeepSee.» — пустой звук для меня, пока вы не расскажете, что это и почему я его хочу.

    И спасибо за ответ! :)
  • Caché Native Access — работаем с нативными библиотеками в Caché
    +4
    Писать посты на тему Caché можно не только в блог InterSystems, и не только силами сотрудников, хабр — социальный проект.

    Про «рецепты из вики», это стиль подачи информации в статье. Как яркий пример такой статьи, wiki.openstreetmap.org/wiki/PostGIS/Installation — вся статья — концентрированный личный опыт. Какие команды выполнить, чтобы достичь результата. Ориентировано исключительно на тех, кто знает, что и с помощью чего он собирается делать. Вот только я пока совсем не вижу причин, по которым кому-нибудь вообще стоит использовать Caché. И это проблема не моя, а компании InterSystems, потому что возьму я в зависимости от задачи PostgreSQL или Redis, а не их разработку.

    Знаете, показателем полезности ваших статей является, например, то, что они не набирали больше +6 (а это меньше, чем сотрудников InterSystems на хабре!), и то, что в комментариях к ним (в основном «отличная статья! автору респект!») не отметилось никого, кроме сотрудников того же InterSystems.

    Если вы хотите увеличивать тусовку людей, то, может быть, стоит задуматься, что и для кого вы пишете на хабре?
  • Caché Native Access — работаем с нативными библиотеками в Caché
    +1
    Понимаете, в чём проблема.
    Я вот пересмотрел все посты из Хабра на тему Caché.

    Подавляющее большинство написано людьми, работающими в InterSystems.

    Подавляющее большинство постов никогда не выходило в топ Хабра.

    Подавляющее большинство постов выглядит, как копипаста рецептов из вики, за исключением того, что никакой вики про Caché мне найти не удалось.

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

    Так что, обращаясь к сотрудникам InterSystems: можно _хороший_ пост _для непосвящённых_, в котором _внятно_ будет объяснено, что такое Caché и зачем его нужно иметь где-то, кроме легаси-кода?
  • Caché Native Access — работаем с нативными библиотеками в Caché
    0
    Что такое Caché?
    Зачем оно нужно?
    Почему у него такое мудрёное название?
    Чем оно отличается от постгреса, монги, редиса?
    Какого чёрта я должен думать о том, как там внутри представляются числа?
  • Тестирование встроенных систем
    +2
    Тест на ntpdate некорректен.
    Во-первых, никак не учтена вероятность того, что за время исполнения теста может измениться секунда.
    Во-вторых, нет проверки того, что время было выставлено правильно именно из-за вызова ntpdate — как минимум, нужна проверка на то, что время хоста и девайса не совпадают до вызова, а возможно и сброс времени девайса в начале.
  • Google предоставляет учащимся безлимитное бесплатное облачное хранилище данных
    0
    Как тот же Dropbox делает — синхронизация перестаёт работать, пока не удалишь «до лимита».