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

На какие вопросы можно ответить, проанализировав 1 500 000 уникальных историй болезней?

Время на прочтение11 мин
Количество просмотров48K
Существует ли связь между астмой и шизофренией?
Диабет и биполярное расстройство личности — могут ли они иметь что-то общее?
Сможет ли выявить столь нетривиальные связи анализ базы данных по 1500000 пациентов США?

предупреждение: под катом очень много текста
Читать дальше →
Всего голосов 88: ↑77 и ↓11+66
Комментарии14

Иконки без текста в Windows

Время на прочтение1 мин
Количество просмотров878
Мне всегда нравилась идея иконок без текста, которую я впервые увидел на Dock в Mac OSX от компании Apple. Для многих програм, этот текст не нужен, и неналичие его действительно заставляет иконки выделяться из группы себе-подобных. Теперь вы можете сделать тот-же самый эффект для Виндоус XP, или даже Виста. Вот как: ru.vistarewired.com/2007/04/08/%d0%ba%d0%b0%d0%ba-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d1%82%d1%8c-%d0%b8%d0%ba%d0%be%d0%bd%d0%ba%d0%b8-%d0%b1%d0%b5%d0%b7-%d1%82%d0%b5%d0%ba%d1%81%d1%82%d0%b0-%d0%b2-windows
Всего голосов 9: ↑4 и ↓5-1
Комментарии2

Размышления о Personal Information Management

Время на прочтение8 мин
Количество просмотров14K
Пару лет назад наткнулся на статью, в которой рассматривалась тема использования PIM в реальной жизни, с тех пор эта тема не покидает мои мысли. Прочитал и подумал: вот он Грааль личной эффективности. За это время прочитал достаточно много статей по этой интересной теме, но той единственной пока не нашел. Авторы статей размышляют на тему какой он, этот PIM, но четкого представления о том, что он из себя представляет, ни у кого нет, как нет и софта, который достаточно полно реализует идеи PIM.

Идеи в статьях на тему PIM:

1. PIM, как статичная, структурированная база материалов, интересующих пользователя.
2. Другие делают упор на организацию данных в виде MindMaps, на которых удобно отображать логические связи, генерировать идеи на основе отображенных данных.
3. PIM, как personal task manager, ориентированный чисто на реализацию принципов GTD.
4. PIM, как экспертная система, в которой накапливаются знания, которые получает пользователь в процессе своей профессиональной деятельности.
5. PIM, как дневник, в котором пользователь описывает свои идеи, ощущения. Такой «блог для себя самого».

Попробую сформулировать свои требования к «правильному» PIM, как я его представляю.
Читать дальше →
Всего голосов 10: ↑8 и ↓2+6
Комментарии4

Обзор примера применения обучения с подкреплением с использованием TensorFlow

Время на прочтение21 мин
Количество просмотров46K
КПДВ. В Karpathy game играет нейронная сеть

Всем привет!
Я думаю, что многие слышали о Google DeepMind. О том как они обучают программы играть в игры Atari лучше человека. Сегодня я хочу представить вам статью о том, как сделать нечто подобное. Данная статья — это обзор идеи и кода примера применения Q-learning, являющегося частным случаем обучения с подкреплением. Пример основан на статье сотрудников Google DeepMind.
За подробностями добро пожаловать под кат
Всего голосов 22: ↑22 и ↓0+22
Комментарии15

Тестирование скриншотами

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

Здравствуйте! Сегодня хочу рассказать о нашем опыте тестирования скриншотами с использованием python, selenium, и Pillow.

Зачем? У нас был довольно большой (~1000) набор тестов на стеке python, pytest, selenium, которые отлично проверяли, что кнопки кликаются, а статистика отправляется (с использованием browserup proxy), но пропускали баги типа таких:  

Читать далее
Всего голосов 14: ↑13 и ↓1+12
Комментарии0

ЗаETLье или Особенности рыбалки в Озере данных

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

Привет, меня зовут Алексей Белявцев и я ETL-архитектор в X5 Group. Наши объёмы данных соизмеримы с крупнейшими международными компаниями и требуют специального ухода и содержания, что накладывает определённый отпечаток на специфику используемых решений. Я не планирую грузить вас описанием детальной архитектуры (всё равно её нельзя публиковать), скриптами загрузки (их тем более) и другими скучными подробностями технической реализации, которые в достатке присутствуют во всех data-driven компаниях, а хочу заглянуть в будущее и попытаться представить архитектуру, удовлетворяющую всем потенциально возможным требованиям, масштабируемую, отказоустойчивую и просто приятную во всех отношениях.

Речь пойдёт о практиках сборки данных (подготовка снастей и поиск водохранилища), а также о нахождении оптимальной точки раздачи данных (лунке в зимний сезон или просто удачного места в рогозе) в реалиях очень big data, сотен систем-источников (СИ) и петабайтах данных (примерно как порыбачить в океане). Цель изложения заключается в консолидации и структурировании информации по теме и размышлениях об идеализированной архитектуре в зависимости от потребностей подразделений компании в данных. Будут высказаны предположения по опережающему развитию архитектуры под новые требования бизнеса третьего десятилетия 21 века, при этом многие из затронутых тем на текущем этапе развития направления являются более чем holywar-ными, причём подходы, успешно использующиеся в одних компаниях, могут быть провальны в других и наоборот (зависит от многих факторов).

Читать далее
Всего голосов 9: ↑7 и ↓2+5
Комментарии11

Образование — наше будущее (или 10 самых востребованных учебных профессий через десять лет)

Время на прочтение15 мин
Количество просмотров38K
Сейчас буквально повсюду уделяется повышенное внимание качеству образования. Взрывной рост площадок с онлайн-курсами и постоянная переработка школьных программ, новые форматы обучения и использование передовых технологий – все это сегодня распространяется с максимальной скоростью. Так все больше людей в мире осознают, что эффективность, мощь и престижность государства будущего будет определяться прежде всего умственным потенциалом, а не количеством выплавленного чугуна или произведенного текстиля. Давайте же попробуем поразмышлять о тех образовательных профессиях будущего, которые помогут вывести человечество на новый виток эволюции: от человека разумного к человеку сверх-образованному.

image
Читать дальше →
Всего голосов 38: ↑19 и ↓190
Комментарии17

Настройка Firefox в Linux

Уровень сложностиСредний
Время на прочтение127 мин
Количество просмотров87K
Решил написать о настройке Firefox для Linux. В интернете похожие статьи тоже есть, но в основном они по старым версиям браузера. Радикальных отличий в настройке Firefox для Linux или для Windows нет, однако есть свои особенности.
Читать дальше →
Всего голосов 35: ↑30 и ↓5+25
Комментарии365

ИТ-инфраструктура одной государственной бюджетной образовательной организации

Время на прочтение12 мин
Количество просмотров30K
Здравствуйте!
Основной целью статьи является осветить вопрос развития ИТ-инфраструктуры одной государственной бюджетной образовательной организации в условиях ограничения бюджета.

Цель публикации


1. поделиться опытом;
2. по возможности, получить отзывы и рекомендации.

Введение


Ни для кого не секрет, что движителем развития ИТ в организации могут быть:
А) отдел ИТ (или его представители).
Б) бизнес (или его представители).

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

Для решения любой проблемы необходимо сделать первый шаг – признать ее существование (проблемы). Затем планомерно выполнить следующее:
А) описать ее, понять причины;
Б) поставить задачи по устранению причин и недопущению их в будущем;
В) решать поставленные задачи и отслеживать, контролировать состояние, поддерживая его в стабильном положении.
Это все лирика теория. Переходим к практике.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии21

Ошибка при создании ссылки

Время на прочтение1 мин
Количество просмотров559
При создании топика в виде ссылки не распознает кириллицу ни в явном виде, ни в виде кодов. Ругается, что ссылка неверная.
Не принимает ни
ru.wikipedia.org/wiki/Пищевые_добавки (автоматически распозналось в тексте)
ни
http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D0%B8%D1%89%D0%B5%D0%B2%D1%8B%D0%B5_%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%BA%D0%B8
(сделано с href)
ни
тег href с любой из них.
Может разрешить тегирование в заголовке при создании ссылок?
Всего голосов 4: ↑2 и ↓20
Комментарии3

Практика использования arp-spoofing

Время на прочтение4 мин
Количество просмотров65K
В данной статье я расскажу как, используя пакет утилит arp-sk в операционной системе GNU/Linux реализовать атаку man-in-the-middle на протокол arp.
image

Для чего вообще нужна такая атака:
На хабре достаточно много статей например для взлома Wi-Fi. Но что делать после того, как ключ взломан? Тут можно увидеть один из вариантов действий.
Читать дальше →
Всего голосов 59: ↑52 и ↓7+45
Комментарии29

Большие уличные часы

Время на прочтение4 мин
Количество просмотров20K
Всё таки не хабраэффект не дает о себе забыть. Статья о том как сделать большие часы, которые можно повешать на здание. Скопирована на хабр т.к. сервер не в состоянии переварить столько посетителей.
Читать дальше →
Всего голосов 49: ↑45 и ↓4+41
Комментарии33

Об Intel Optane и прочих вариантах хранения информации

Время на прочтение6 мин
Количество просмотров11K
Заинтересовала меня статья aisergeev об Intel с их технологией 3D XPoint. В статье указано, что это технология хранения информации не боящаяся утечки электронов, что в общем-то принято называть энергонезависимой памятью. Замечательно что подобные технологии приходят в нашу жизнь. На данный момент среди твердотельных энергонезависимых устройств хранения информации, наиболее широко распространены usb flash и ssd. Но, у них есть минусы в виде этой самой утечки электронов, что в свою очередь накладывает ограничения на срок хранения информации. Очевидно что Intel выпустил принципиально иной тип памяти, раз уж запись в нём не зависит от утечки электронов.

Очень меня заинтересовала как именно Intel создали свою память. Я поискал в сети и хочу поделиться с вами возможными вариантами этой технологии.
Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Комментарии25

Варп-двигатель в Star Trek

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

Концепция сверхсветового двигателя, использующая артефакт общей теории относительности — складку из пустого пространства, как ни удивительно, создана впервые не учеными, а шоуранерами телесериала Star Trek.

Космос — последний рубеж. Он отделен от нас утилитарным проблемами, которые можно описать частушкой:

«На Луне, Луне, Луне мы построили колхоз:

Нет еды и кислорода, половой встает вопрос!»

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

В 1966 году создатели оригинального сериала «Star Trek» предложили технологию варп‑двигателя и варп‑генератора энергии. С тех пор идея прошла серьезную эволюцию, обретя два поколения научных моделей.

Читать далее
Всего голосов 26: ↑16 и ↓10+6
Комментарии60

Схема разделения секретной визуальной информации

Время на прочтение6 мин
Количество просмотров25K
Доброго времени суток, Хабрапользователи!

Визуальная криптография [1] впервые была введена Мони Наором и Ади Шамиром в 1994 году [3]. Она используется для шифрования изображения или текста, представленного в виде изображения. Основная идея модели визуальной криптографии состоит в разбиении исходного изображения на несколько шифрованных («теневых» изображений, shadow images), каждое из которых не дает никакой информации об исходном изображении кроме, может быть, его размера (изображение – а-ля «белый шум»). При наложении шифрованных изображений друг на друга, можно получить исходное изображение. Таким образом, для декодирования не требуется специальных знаний, высокопроизводительных вычислений и даже компьютера (в случае, если распечатать теневые изображения на прозрачных пленках). В случае использования этого алгоритма в компьютерных системах, наложить все части изображения друг на друга можно используя логические операции AND, OR, XOR (или установив более высокую степень прозрачности в графическом редакторе). Данная технология обладает криптоустойчивостью за счет того, что при разделении исходного изображения на множество шифроизображений происходит случайным образом.

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

Сети для самых маленьких. Часть седьмая. VPN

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


Покупка заводов в Сибири была стратегически правильным решением для компании “Лифт ми Ам”. После того, как лифты стали ездить не только вверх, но и вниз, дела компании пошли… нет полетели, вверх. Лифты начали разбирать, как горячие пирожки со стола. Название уже не соответствовало действительности и было принято решение о ребрендинге. (На самом деле их замучила судебная тяжба с Моби).
Итак, под крыло ЛинкМиАп планируется взять заводы в Новосибирске, Томске и Брно. Самое время подумать о том, как это хозяйство подключить к имеющейся сети.

Итак, сегодня рассматриваем
1) Возможные варианты подключения, их плюсы и минусы
2) Site-to-Site VPN на основе GRE и IPSec
3) Большая тема: динамическая многоточечная виртуальная сеть (DMVPN) в теории и на практике.

В традиционном видео лишь ёмкая выжимка из статьи, посвящённая работе и настройке DMVPN.

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

Полвека «универсальным машинным языкам» (1966—2016): прошлое, настоящее, будущее

Время на прочтение27 мин
Количество просмотров19K
КДПВ

Прошлое


Повествование можно начать с 1962 г., когда в Кембриджском университете началась работа над CPL («Cambridge Programming Language») — «усовершенствованным вариантом» ALGOL-60. К работе над языком подключился аспирант Мартин Ричардс; главной сложностью в реализации нового ЯП ему показалась необходимость ручного портирования компилятора для разных компьютерных платформ. В частности, когда кембриджский EDSAC-2 заменили на Atlas-2, разработчики CPL потратили много времени на портирование своего компилятора для новой платформы.

Диссертация Мартина была посвящена «само-компилирующемуся» CPL: разработанный Мартином компилятор был написан на сильно упрощённом варианте CPL, компилятор которого несложно было написать на тогдашнем макроассемблере. Перенос CPL на новую платформу теперь можно было выполнить в два шага:
  1. Вручную пишем компилятор «упрощённого CPL»;
  2. Компилируем им компилятор «полного CPL».

На этом Мартин не остановился, и разработал BCPL — систему для разработки переносимых компиляторов. Компилятор BCPL генерировал псевдокод, названный Мартином «OCODE».
OCODE выглядел примерно так:
OCODE «расшифровка» («procode»)
94 5 L1 83 73 69 86 69
95 4
42 0
42 0 40 2 14
83
42 0 42 1 40 2 14 83
42 2
40 3 42 1 15
92
85 L5
90 L6
42 1 40 4 40 2 14 83
40 4 42 1 14 80 4 
90 5 40 4 40 5 88 L6
91 4
42 2 40 3 42 1 15 92
85 L7
90 L8 40 4 40 2 14
8 87 L9
40 4 42 2 11 92
85 L11
90 L10
42 0 40 6 40 2 14 83
40 4 40 6 14 80 6
90 L11
40 6 40 3 22 86 L10
91 6 90 L9
40 4 42 1 14 80 4
90 L7 40 4 40 5 88 L8
91 4 97 103 0
ENTRY 5 L1  'S' 'I' 'E' 'V' 'E'
SAVE 4
LN 0
LN 0 LP 2 PLUS
STIND
LN 0 LN 1 LP 2 PLUS STIND
LN 2
LP 3 LN 1 MINUS
STORE
JUMP L5
LAB L6
LN 1 LP 4 LP 2 PLUS STIND
LP 4 LN 1 PLUS SP 4
LAB L5 LP 4 LP 5 ENDFOR L6
STACK 4
LN 2 LP 3 LN 1 MINUS STORE
JUMP L7
LAB L8 LP 4 LP 2 PLUS
RV JF L9
LP 4 LN 2 MULT STORE
JUMP L11
LAB L10
LN 0 LP 6 LP 2 PLUS STIND
LP 4 LP 6 PLUS SP 6
LAB L11
LP 6 LP 3 LS JT L10
STACK 6 LAB L9
LP 4 LN 1 PLUS SP 4
LAB L7 LP 4 LP 5 ENDFOR L8
STACK 4 RTRN ENDPROC 0
; заголовок процедуры
; стековый кадр (два параметра и две локальные переменные)
; поместить на стек число 0
; поместить ещё один 0, прибавить к нему 2-ой элемент стека
; записать в массив на вершине стека значение под ним
; всё то же самое для 1-ого элемента массива
; поместить на стек число 2
; вычесть единицу из значения 3-его элемента стека
; записать результат в локальную переменную
; перейти к метке L5
; объявление метки L6
; взять 4-ый элемент стека, записать в массив по этому индексу 1
; прибавить к 4-ому элементу стека 1, записать результат обратно
; L5: перейти к метке L6, если 4-ый элемент стека <= 5-ому
; объявление, что на стеке сейчас четыре элемента
; вычесть единицу из значения 3-его элемента стека
; перейти к метке L7
; L8: сложить 4-ый и 2-ой элементы стека
; прочитать значение по этому адресу; если это 0, перейти к L9
; умножить 4-ый элемент на два
; перейти к метке L11
; объявление метки L10
; взять 6-ой элемент стека, записать в массив по этому индексу 0
; прибавить к 6-ому элементу стека 4-ый, записать рез-т обратно
; объявление метки L11
; перейти к метке L10, если 7-ой элемент стека меньше 4-ого
; на стеке сейчас шесть элементов; объявление метки L9
; прибавить к 4-ому элементу стека 1, записать результат обратно
; L10: перейти к L8, если 4-ый элемент стека <= 5-ому
; на стеке четыре элемента; окончание процедуры
(Для экономии места, последовательности команд записаны в одну строчку. Мартин в своём руководстве по BCPL поступает точно так же.)

Исходный код на BCPL:
LET sieve(workvec, vecsize) BE
{
  workvec!0 := 0
  workvec!1 := 0
  FOR i = 2 TO vecsize-1 DO workvec!i := 1
  FOR i = 2 TO vecsize-1 DO
    IF workvec!i DO
    { LET j = 2 * i
      WHILE j < vecsize DO
      { workvec!j := 0
        j := j + i
      }
    }
}
В более новых версиях OCODE добавилась поддержка чисел с плавающей точкой (соответственно, набор поддерживаемых опкодов почти удвоился), а также удалили опкод ENDFOR — вместо него генерируется пара LE JT.

Среди «универсальных машинных языков» OCODE уникален тем, что метки в нём определяются специальными инструкциями — т.е. для интерпретации программы её нужно сначала всю загрузить в память, и найти в ней метки.
— а отдельная программа, кодогенератор, превращала файл с таким псевдокодом в исполнимую программу для конечного процессора. OCODE сохранялся в виде текстового файла из десятичных чисел, разделённых пробелами и переводами строк: в то время, когда OCODE разрабатывался, привязка формата файла к конкретному размеру байта ограничивала бы переносимость такого файла.

Компилятор BCPL(1) поставлялся в виде OCODE, и чтобы перенести его на новую платформу, нужно было:
  1. Вручную написать интерпретатор псевдокода(2) (на любом языке, хоть на Бейсике);
  2. Адаптировать кодогенератор,(3) написанный на BCPL, для своей платформы;
  3. Запустить под интерпретатором (2) компилятор BCPL (1), скормить ему кодогенератор (3), и получить на выходе исполнимый файл кодогенератора(4);
    • Интерпретатор (2) нам с этого момента больше не нужен.
  4. Прогнать через кодогенератор (4) псевдокод компилятора (1), и получить на выходе исполнимый файл компилятора.


Такой подход означал, что для переноса компилятора на новую платформу требуется лишь самый минимум низкоуровневого программирования; и действительно, реализация BCPL была завершена к 1967 г. — раньше, чем была завершена реализация CPL, начатая на несколько лет раньше!

Достоинства BCPL применительно к системному программированию вдохновили Кена Томпсона на создание языка Би, а тот — коллегу Кена, Денниса Ритчи, на создание Си. Именно из BCPL пошла традиция обозначать {фигурными скобками} блоки программы, и именно на BCPL была написана первая программа «Hello, World!».
GET "libhdr"

LET start() = VALOF
{ writef("Hello*n")
  RESULTIS 0
}
Более важная нам причина, по которой BCPL вошёл в историю: OCODE — первая универсальная «архитектура набора команд» (ISA), т.е. «виртуальная машина», не привязанная ни к какой конкретной аппаратной платформе с её особенностями. BCPL, таким образом — первый язык программирования, соответствующий парадигме «Write once, run anywhere» (WORA): программу на BCPL можно распространять в скомпилированном виде, и её можно будет запустить на любой платформе, для которой существует OCODE-кодогенератор.
Читать дальше →
Всего голосов 53: ↑51 и ↓2+49
Комментарии45

OpenOCD, GDB и (сильно)удалённая отладка

Время на прочтение7 мин
Количество просмотров27K
Дано: есть устройство, с ARM926E-JS (Cypress FX3) на борту. Устройство находится на другом континенте. Устройство подключено (JTAG+USB+COM) к Linux компу. На комп есть SSH доступ (и больше ничего, только SSH порт).

Проблема: Устройство нужно отлаживать и писать под него код. И делать это, желательно, удобно.

Решение с использованием OpenOCD, GDB и Qt Creator, а так же описание пути к нему, под катом.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии2

Сравнительный анализ CMS: охота на оптимальную систему для создания корпоративных сайтов

Время на прочтение14 мин
Количество просмотров95K
Здравствуйте!

Хочу поделиться результатом собственного исследования, проводимого мной на протяжении недели в среде существующих CMS. Цель у меня была проста и прагматична — выбрать лучшую систему для создания корпоративных сайтов. Такая необходимость возникла в связи с постоянно растущим количеством заказов на сайты. С одной стороны, это не может не радовать, а с другой — заставляет максимально тщательно и с полной ответственностью отнестись к выбору движка, которому и предстоит сопутствовать не слишком опытному программисту в вопросе создания сайтов.
Читать дальше →
Всего голосов 110: ↑56 и ↓54+2
Комментарии188

Nakamichi: о богах кассетной эпохи и временах, когда восходящее солнце светило ярче

Время на прочтение7 мин
Количество просмотров22K
Среди технологических шедевров недавнего прошлого попадаются настоящие сокровища. Речь об устройствах, которые становятся символом качества, воплощением коллективного инженерного гения, свидетельством передовых для своего времени подходов к разработке. К несчастью, иногда такие устройства основательно забываются, равно как и компании, которые их произвели.



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