Как стать автором
Обновить
17
0
Руслан @ruzzz

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

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

Вместо Lambda и генерации Excel файлов можно сделать Cost and Usage Report и потом делать запросы через Athena

это все делает из убунты слакварь. не делайте так.

если сложно следовать вот этому
https://wiki.ubuntu.com/PackagingGuide/Complete
и этому
https://help.ubuntu.com/6.10/ubuntu/packagingguide/C/basic-debhelper.html
то есть графические хелперы:
https://launchpad.net/~giftwrap/+archive/ppa
https://launchpad.net/gdebui
https://launchpad.net/debianpackagemaker
https://launchpad.net/debcreator

docker прекрасно работает и через ssh, вся настройка ограничивается установкой переменной окружения


DOCKER_HOST=ssh://server

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


% DOCKER_HOST=ssh://server1 docker ps
% DOCKER_HOST=ssh://server2 docker ps
В Web много интересных вещей. Например, сейчас весьма популярен безопасный HTTPS. В этом стеке протоколов есть штуки, которые похожи по смыслу на Cookie и ETag, про которые говорится в статье, с теми же по сути проблемами.

Я имею ввиду SSL Session Id и TLS Session Tickets. Технически они предназначены для того, чтобы уменьшить время установки соединения. Но их так же можно использовать и трекинга пользователей www.ssl.com/article/tracking-users-with-tls.

В этом плане доступ к инфраструктуре открывает большие возможности. Например, Cloudflare писали еще в 2015, что сделали Seesion Id глобальным с ротацией примерно через каждые 18 часов ( blog.cloudflare.com/tls-session-resumption-full-speed-and-secure ). На то были технические причины. Но это так же означает, что если в такой промежуток времени вас как-то получится определить (например, вашу учётку на Facebook), то можно будет замапить и все остальные запросы в этом периоде от других сайтов, которые используют Cloudflare. Сейчас набирает популярность еще более безопасный DNS over TLS, где сервису так же отводится не последняя роль.
«Мудрость толпы» это брендированная социальная инженерия, работает не везде и не со всеми, чтобы из толпы что-то сделать для этого массово нужно мотивировать и убедить в необходимости сооблюдать новые правила игры переходящие в общественный договор. Во времена когда не хватает экспертов (как и программистов) используют соц.технологии среди тех кто потенциально выстрелит, подобный финт делают рекрутеры, когда вкидывают фейковые предложения о работе, мотивируя изучать новые технологии, третьи мотивируются грантами и так по всем сегментам. Вся толпа не может сидеть в одном сообществе, мудрость в том чтобы ее сегментировать и научить в итоге частям взаимодействовать, затем после эволюции получить эффект на массовости участников имеющих отдельно ограниченные знания, но в целом обладающих распределенным интеллектом. Разделяй и властвуй!

Вот текущий черновик в удобном для просмотра виде eel.is/c++draft.


А вот тут и более старые версии и в виде html, и в pdf.

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

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

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

Второй шаг — осознать, что «ничто не истинно — всё вероятности». Любые убеждения имеют свой вес, степень уверенности в этом убеждении. Цепочки убеждений можно складывать не только из абсолютно истинных звеньев.
Например, у нас есть цепочка А -> Б.
Если достоверность А и Б высокие, то достоверность цепочки высокая.
Если у А достоверность низкая, то и у всей цепочки достоверность резко понизится.

Возвращаясь к вашему примеру. Зависит все конечно от того, насколько важна цель, сколько ресурсов вы можете себе позволить потратить, сколько есть времени и тд. Разберем по пунктам:

а) Если есть возможность, можно воспользоваться чужой статистикой. Например, чтобы препарат зарегистрировать (если это не бад), нужно провести испытания (на самом деле я ни черта не разбираюсь в том, как регистрируют лекарства, так что уточнения/опровержения привествуются). Двойной слепой эксперимент и всё такое. Изучите результаты. Либо можно найти двести добровольцев, заплатить им и собрать статистику самостоятельно.

б и в) Эти пункты объединю, т.к. тут в принципе одна и та же ошибка. Один человек не способен изучить знания человечества, не хватит у него ресурсов. Но тут в дело вступает цепочка убеждений. Вы не сможете изучить все научные работы. Но вы можете оценить квалификации научного журнала и авторов этих работ. Насколько они авторитетны, были ли раньше скандалы, опровержения, уточнения после публикаций.
Так же и с врачами. Насколько этот врач опытен. Лечил ли он раньше эту болезнь. Пытается ли он просто заработать, продвигая лекарство. В итоге получается что-то вроде формулы: «ваша_уверенность_во_враче Х уверенность_врача_в_лекарстве».
НЛО прилетело и опубликовало эту надпись здесь
Можно провести 10 разных экспериментов, получить 10 разных результатов — потому что изучаемый человек поставил перед собой задачу над тобой приколоться, чтобы у тебя ничего не получилось. Как научным способом учесть фактор обмана, если выглядеть будет всё правдоподобно? Я понимаю, что есть психологические эксперименты, которые раз от разу повторяются, но тут рядом уже справедливо заметили, что в случае обычной жизни строгая наука требует чрезмерные ресурсы для получения с бытовой точки зрения тривиальных результатов. А если изучаемый объект один (не стоит цели обобщить поведение с одного на семь миллиардов) и он вот прикалывается? :-)

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

для того, чтоб работать на практике с уже имеющейся абстракцией ЗЛОСТЬ — научный метод избыточно тяжет и нееффективен. для практического применения выработано достаточное число простых и легких евристик.
он нужен в редком случае — в научной работе психолога, для получения новых знаний или проверки новых гипотез.

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

«Настоящее мышление — это как танцы лошадей, оно очень редко встречается на свете и играет примерно такую же роль в жизни людей; ему надо специально учиться, и даже те, кто прошёл хорошую школу мышления, отнюдь не всегда, проделав это раз или два, могут повторить это в третий и в четвёртый раз.»
скандинавский лингвист Ульдалль
Что можете сказать об PixelJunk Shooter?
Игры давно не играю, но эта, основанная на физике, заставила пройти до конца.

Кстати посмотрел Netlify. Функционал похож на surge.sh и pubstorm.com за исключением того что тут для опенсорс-проектов дают особые плюшки)
ИМХО наибольшее число нововведение, которые мне оочень нравились было реализовано в любтельском глобальном моде для CIV4. Кажется это «Rise Of Mankind».
Из интересных вещей,
— В древности вместо варворов было много диких животных, убийство которых приносило еду в поселение, и затем их вытесняли варвары.
— Можно было начать игру одному на карте, а варвары по мере появления строили свои деревушки, которые затем превращались в варварские города и рождались новые цивилизации.
— Много интересных механник, ограничивающих рост в виде например здоровья. У городов были очки здоровья, и по мере того как они уходили в минус, появлялись различные болезни, сказывающиеся на продуктивности города.
— В зависимости от удаления от столицы, и зданий накапливались очки преступности, и появлялись преступные негативные последствия. Причем при развитии технологий, преступных махинаций появлялось больше, например при открытии денег и уровне преступности более 300 появлялось фальшивомонетнечество, отмывание денег при открытии банков и многое другое. И некоторые особо коррумпированные города могли высасать все ресурсы из страны. Были так же юниты полиции, которые вводились в город.
— Если народ находился долго в недовольном состоянии, могла начатся гражданская война, или просто города отделится в независимое гос-во.
— Так же если народ был не доволен то могли сместить провительство (давался выбор, либо повтсанцы, либо передать власть) и власть передавалась AI на N ходов.
— Интересно была развита идея с корпорациями, и их бонусы в зависимости от контролируемых ресурсов. К примеру у СУШИ корп, бонусы расли от контролируемых морепродуктов и риса.
— Так же возможности улучшения клеток рабочими зависили от контролируемых ресурсов, к примеру дороги по умолчанию были просто тропы, без бонуса движения, только для торговли, но по мере развития например если контролирешь камень то можно было их укладывать камнями.
— Деревушки, рынки, шахты, заводы (улучшения клеток рабочими), по прошествию N ходов улучшались (Дом 20 ходов-> группа домов 30х -> деревушка -> городок, шахта -> глубокая хашта -> мега шахта и т.д.). Таким образом надо было строить улучшения раньше, чтобы они разрослись, и имело смысл захватывать именно инфраструктуру врага, сносить города и строить свои но с развитой инфраструктурой, или же ноборот шпионско разрушать его инфраструктуру.
— разные типы праительства давали разные бонусы улучшением клеток, например при феодолизме крепости довали золото и дополнительное золо на соседних клетках с фермами, таким образом страна с феодолизмом потихоньку трасформировалась рабочими в кучу ферм с крепостями, так как это было выгодно, а при переходе в индустрионализм было много городков с фабриками и шахтами. что сильно меняло облик государств.
— очень интересно был пропработан вопрос с религиями и уникальными постройками у каждой. так же контроль в правительстве, можно ли мульти релии или только государственную, или атеизм и от религий были штрафы. (большие бонусы за контроль городов где зародилось религия)
— если города рапологались за океаном то были большие штрафы, и была функция подарить независимость регионам. Если это сделать то они превращались в государство, абсолютный союзник, и делились ресурсами, при этом часто прибыль от этого была больше. (типа как строить колонии).
И многое мноегое другое.…
Есть хороший код-сниппет, который переезжает у меня из проекта в проект.
def get_mocked_user_agent():
    try:
        response = requests.get("http://api.useragent.io/")
        response = json.loads(response.text)
        return response['ua']
    except:
        try:
            response = requests.get("http://labs.wis.nu/ua/")
            response = json.loads(response.text)
            return response['ua']
        except:
            return DEFAULT_UA


Успехов!
Зря заминусили только, подборки очень даже грамотны. Мне не жалко, больше теряете. По сути в этой сборке я нашел для себя тот самый менеджер пакетов о котором долго мечтали виндусятники.

rutracker.org/forum/viewtopic.php?t=2196256

Вырезал что будет интересно системщикам, на самом деле список огогого…

Accounts Tuner — настройка некоторых дополнительных параметров безопасности учётных записей
Ad Muncher — блокировка рекламы, всплывающих окон, баннеров и других нежелательных объектов на веб-страницах. Запуск с Shift добавит программу в автозагрузку, запуск с Alt уберет
Advanced IP Scanner — сканер сети. Получение информации об устройствах сети
AIDA64 — все о компьютере + стресс-тест и бенчмарки. Запуск с Ctrl обновит программу
Antirun 2.3 — проверка съёмных накопителей на вредоносные файлы автозапуска в реальном времени + удобная извлекалка съёмных дисков
AnVir Task Manager — управление автозагрузкой, процессами, сервисами и драйверами. Замена диспетчера задач. Запуск с Ctrl обновит программу
AppCrashView — отображение информации обо всех приложениях, которые были аварийно закрыты или остановлены
ASPack — упаковщик исполняемых файлов
Autoruns — все, что автостартует в системе. Можно управлять автозагрузкой автономной системы
AVSearch — поиск текста в файлах
AVZ — борьба с SpyWare, AdWare, Dialer, BackDoor, Trojan + очень полезная система исследования и восстановления Windows. Запуск с Ctrl обновит программу
Back2Life — надежное, удобное и быстрое восстановление удаленных данных
BadCopyPro — восстановление данных с дискет, HDD, CD, Flash-карт и других носителей
Beyond Compare — сравнить файлы или каталоги по содержимому (Win+F2 или Alt+C)
BlueScreenView — отображает расширенные сведения обо всех BSOD в сводной таблице
BOOTICE — манипуляция загрузочными секторами с широкими возможностями. Загрузка различных ОС, восстановление загрузки
BSOD — сборник инструкций по устранению неполадок при возникновении Blue Screen Of Death
CCleaner+ — очистка от логов, временных файлов, мусора в реестре. Деинсталляция, затирание нулями. Запуск с Ctrl обновит программу
Check Flash — тест работоспособности и скорости. Редактирование, сохранение и восстанавление раздела/диска/загрузчика
ChkDskGui — интерфейс для консольной утилиты Chkdsk
CLCL — кеширование буфера обмена
ColorConsole — более функциональная замена cmd с поддержкой вкладок. Запуск с Ctrl обновит программу
ConvertFN — массовая смена кодировки
CPU-Z — информация о CPU
CrystalDiskInfo — показания S.M.A.R.T. Управление питанием и акустическим режимом
CurrPorts — показывает все открытые порты вашего компьютера, закрытие TCP-соединений, завершение процессов
DirectGRUB — GUI для создания загрузочной флешки с подгрузкой ISO
DM Disk Editor and Data Recovery — поиск, редактирование и восстановление информации на дисках
DomainHostingView — показывает подробную информацию о доменах
DOSBox — эмулятор MS DOS (FAQ в папке с программой)
Dr.Web 6 Portable Scanner — лечащий антивирусный сканер. Запуск с Shift проверит файл/папку под курсором. Запуск с Ctrl обновит программу
Driver Fusion — полное удаление драйверов, резервное копирование, восстановление. Требуется .NET
Driver Genius Professional 11 — идентификация неизвестных устройств, поиск и обновление драйверов через Интернет. Сохранение установленных драйверов
Error Lookup — получение информации об ошибках в Windows
ERUNT — бэкап реестра, можно автоматически при каждой загрузке
Everything — мгновенный (!) поиск файлов и папок на ПК [Shift+F7]
FileTypesMan — файловые ассоциации системы и их изменение
Flash Drive Information Extractor — получение информации о флешках
FlashCookiesView — отображение списка файлов cookie, созданных Flash компонентами в веб-браузере
Flying Windows — набор полезных инструментов. Хелп в папке с программой
FurMark — стресс-тест и бенчмарк GPU
Ghost32 — создание/клонирование образов дисков/разделов
GIGATweaker — тонкая настройка Windows 7
GPU-Z — информация о GPU, сохранение BIOS. Запуск с Ctrl обновит программу
Hardware Monitor Pro — все датчики системы, в том числе удалённой. Вывод в трей любого параметра
HD Tune Pro — показания S.M.A.R.T. Диагностика и тест HDD, SSD, RAID, Flash. Управление питанием и акустическим режимом
HDD Low Level Format Tool — низкоуровневое форматирование
HDD Scanner — показывает распределение информации на диске/папке под курсором
HDHacker — сохранение и восстановление MBR физ. дисков, BootSector лог. дисков или specified sector любых дисков
HDI — индикатор чтения/записи жесткого диска
HFS — создание файлового HTTP-сервера
Image Uploader — снимки экрана, загрузка изображений на сайты, в том числе из буфера обмена. Можно перетащить файл на кнопку
Imagine [Редактор анимации] — создание и редактирование GIF, ANI-файлов
Imagine — просмотр, правка и конвертирование графических файлов. Запуск с Ctrl ассоциирует программу с графическими файлами, запуск с Shift отменит [Alt+F3 откроет файл под курсором]
KeePass Classic Edition — надёжное хранение паролей
KiTTY — модифицированная версия программы PuTTY
Kremlin Decrypt — расшифровать файл или папку под курсором
Kremlin Encrypt — зашифровать файл или папку под курсором
Kremlin Secdel — удалить файл/папку под курсором без возможности восстановления (Win+Shift+F8)
Kremlin Wipe — затирание пустых мест для невозможности восстановления удаленных данных
LanTalk.NET — не требующая сервера система мгновенных сообщений для локальной сети
MACAddressView — информация о сетевых адаптерах по их MAC адресам
MikroTik WinBox Loader — конфигуратор для RouterOS
MiniTool Partition Wizard — работа с разделами HDD и Flash, разбиение, форматирование, изменение размера
mInstaller — создание инсталляторов
MKey — назначение разных действий любым клавишам и их сочетаниям. Управление проигрывателями, браузерами, сетевыми подключениями. Запуск с Ctrl обновит программу
MobaLiveCD — простая виртуальная машина для проверки загрузочных образов/флешек
MoleBox — упаковка приложения в один exe-файл
MPR — показывает пароли из более чем 110 популярных программ (FTP, E-mail клиенты, Интернет пейджеры, Браузеры и пр.) Показывает пароли под здездочками. Генератор паролей
MSI Afterburner — разгон, настройка и мониторинг GPU. Запись видео из игр — Shift+Alt+W
MultiBoot — восстановление загрузчика Windows Vista/7 и создании мультизагрузочного меню
NetDrive — Монтирует FTP, WebDAV как локальный жесткий диск
NetLook — альтернатива сетевого окружения, сканер локальной сети, навигация по общим ресурсам и обмен сообщениями
NetRouteView — графическая оболочка стандартной Windows утилиты по управлению маршрутами
NetSetMan — настройка сети, создание профилей с разными настройками, автопереключение профилей. Запуск с Ctrl обновит программу
NetVoice — чат и голосовое общение в локальной сети, конференция. Не требует сервера
NetworkTrafficView — отображение общей статистики о сетевом трафике
NetWorx — контроль трафика и скорости для всех сетевых подключений. Запуск с Ctrl обновит программу
NonStopCopy — копирование с поврежденных носителей
Noscript — вкл/выкл Windows Script Host
NTFS Links — создать жёсткие или символические ссылки на NTFS-разделах (хелп в папке программы)
NVIDIA Inspector — информация о GPU GeForce их разгон и мониторинг
Open Hardware Monitor — все датчики системы. Вывод в трей любого параметра. Требуется .NET
OpenOffice.org 3 pro — офисный пакет
Orca — редактор msi-инсталляторов (Windows Installer Package)
PageDfrg — дефрагментация реестра и файла подкачки при загрузке Windows XP
PeToUSB — создание LiveUSB из LiveCD, изменение буквы флешки
PlanMaker — редактор электронных таблиц [Alt+F3 откроет файл под курсором]
Pointofix — произвольные снимки экрана, рисование на экране, зум по колёсику мыши и т.п.
PowerOff — планировщик, таймер, ежедневник
Process Explorer — управление процессами, системная информация, завершение сеанса. Замена диспетчера задач
Process Monitor — мониторинг обращений к файлам и к реестру, возможен фильтр на конкретную программу
Pserv — управления процессами, службами, окнами, запуском драйверов, деинсталляцией приложений. Журнал событий Windows
PuTTY — Telnet и SSH клиент. Help в папке с программой
Quick BFC — конвертирует bat в exe
R-Studio — восстановление удалённых файлов и повреждённых разделов с HDD, CD, Flash и RAID
Rapid Environment Editor — информация о системных/пользовательских переменных и их редактирование. Запуск с Ctrl обновит программу
RegConvert — конвертирует reg в bat и inf
RegWorkshop — многофункциональная замена regedit
Restorator — редактор ресурсов в dll, exe, ocx и т.п.
RunAsDate — создаёт для программ среду с заданным временем. Модифицирует программы, останавливая для них время
S&M — стресс тест CPU, БП и памяти
SafeMSI — временное включение Windows Installer в Safe Mode
Sandboxie — запускает программы так, что любые изменения, связанные с использованием этих программ, сохраняются в «песочнице», которую в дальнейшем можно удалить
SCapture — запись в видео файл, того, что отображается на мониторе, создание скриншотов
ShellMenuView — изменение контекстного меню файлов/папок в Проводнике
Simple Port Forwarding — менеджмент портов модемов, роутеров (маршрутизаторов), перенаправление интернет-трафика с одного порта на другой
SlimDrivers Free — поиск и обновление драйверов через Интернет. Бэкап и удаление драйверов. Запуск с Ctrl обновит программу
SmartSniff — перехват и просмотр TCP/IP-пакетов, передаваемых через сетевые адаптеры между клиентом и сервером
SoftPerfect RAM Disk — создания виртуального диска в оперативной памяти
SSD Mini Tweaker — настройка Windows 7/8 под SSD с полезными и сомнительными оптимизациями
Super PI mod — бенчмарк CPU
SysTracer — создание снимков реестра, файлов и их сравнение между собой
TcpView — показывает открытые порты и процессы использующие интернет-соединение, с возможностью их завершения
TeamViewer — управление удалённым ПК, презентации, передача файлов, видео чат (mod by diogen — вырезана реклама). Запуск с Ctrl обновит программу
Teleport VLX — полное или частичное скачивание сайтов из интернета с сохранением всей внутренней структуры каталогов и файлов для последующего их просмотра в оффлайне
TextMaker — редактор документов, проверка орфографии, создание PDF [Alt+F3 откроет файл под курсором]
Tftpd32 — DHCP, TFTP, SNTP и Syslog сервера + TFTP клиент
Tireal TFT Test — тест монитора
TrashReg — чистка реестра + удаление из реестра ключей защиты Trial программ. Запуск с Ctrl обновит программу
TrueCrypt — создаёт зашифрованный том-контейнер (выглядит как обычный файл mp3, avi и тд), который затем можно подключить в виде диска и хранить на нём информацию
UFS Explorer — просмотр файловых систем (можно повреждённых) в том числе Linux и MacOS и восстановление данных
UltraISO — запись дисков. Понимает 35 форматов образов, монтирование, Ripping, создание AudioCD, загрузочных флешек, конвертация форматов образов [Alt+F3 откроет файл под курсором]
UninstallTool — более функциональная замена «Установка и удаления программ»
Universal Extractor — извлечение запакованных файлов, поддерживает огромное число упаковщиков (выделите объект)
Universal Virus Sniffer — борьба с неизвестными вирусами. Отлично справляется с Winlock. Своя система восстановления ОС. Умеет работать с неактивной ОС. Запуск с Ctrl обновит программу
Unlocker — разблокировка, переименование, удаление, перемещение файлов и папок занятых процессом или имеющих некорректное имя (выделите объект)
UPX Shell — упаковщик исполняемых файлов
Upx Unpacker — декомпрессия защищённых UPX
USB Disk Eject — безопасное извлечение USB дисков
USB Disk Storage Format Tool — форматирование флеш-дисков, в том числе в NTFS, создание загрузочных в DOS флеш-дисков
USB Vaccine — защита флешки от вирусов с автозапуском, методом записи на флеш неудаляемых файлов
USBMaster — управление USB-устройствами хранения информации (подробности в меню «Помощь»)
uTorrent — клиент для сетей BitTorrent (P2P). Реклама вырезана. Запуск с Ctrl обновит программу
Victoria — тест и анализ HDD (справка по F1)
VideoCacheView — извлечение видео файлов из кэша веб-браузеров
VirtualBox — создание виртуального компьютера. Можно запустить на одном компьютере одновременно несколько операционных систем [Web-инсталлятор, программа устанавливается в TC]
VirtualDub — захват и обработка видео. Требуются установленные кодеки
Virus Total Upload — отправить файл на сайт VirusTotal.com, там его проверят 40 антивирусов. Можно перетащить файл на кнопку
Visual C++ 2005 — 2012
VMT — стресс-тест видео памяти GPU
Volumouse — управление звуком и др. с помощью мыши
WakeMeOnLan — удалённое включение компьютера
WifiInfoView — обзор активных Wi-Fi сетей. Для каждой найденной сети показывает расширенную информацию
WinContig — дефрагментатор HDD и Flash. Умеет выборочно дефрагментировать файлы и папки. Запуск с Ctrl обновит программу
Windows 8 Firewall Control — защита от нежелательной сетевой активности, контроль выхода приложений в Интернет. Запуск с Ctrl обновит программу
Windows XP WPA-Patch — активация
WinHex — HEX-редактор
WinRAR — функциональный архиватор. Работает с заблокированными архивами
WinSCP — графический клиент протоколов SFTP и SCP
WinUpack — упаковщик исполняемых файлов
Wireless Network Watcher — показывает кто подключался к вашему WiFi
WirelessNetView — обзор активных Wi-Fi сетей. Для каждой найденной сети показывает расширенную информацию
Wise InstallTailor — создание файла ответа в виде mst для msi установщиков
X-Chat — IRC клиент. Поддерживается параллельная работа с несколькими серверами
XP Tweaker — настройка Windows XP + частично Vista и 7
XP-AntiSpy — твикер системы с уклоном на отключение лазеек в XP/2003/Vista/7. Запуск с Ctrl обновит программу
… и многое другое…
Да, дрожь пробрала при виде вёрстки :-).

Вот 2 вещи, которые сделают вас на 90 % умнее:
1. «Облик книги» Чихольда (только купите именно в их верстке и бумажную книгу: нужно на живом примере видеть то, что написано в книге).
2. Butterick’s Practical Typography.
Это теория. «В теории — теория и практика одинаковы, однако на практике это не так».

На практике у вас «O большое» может сработать на таких размерах, которые вы не увидите никогда и ни за что. Потому что за время, пока вы прочитаете один байт из оперативной памяти процессор может исполнять пару тысяч инструкций. Да и строки у вас, не случайны, а что-то типа английского или русского языка.

На эту тему достаточно много в последнее время есть материалов. Хотя всё вертится обычно всё равно вокруг какой-нибудь версии trie. Начиная с классических Judy tree и далее — к более практическим Judy Array и HatTrie.

Хотя всё это крохоборство: я бы не стал всем этим заморачиваться пока замеры бы не показали, что вот именно в map<string, int> у нас затык.
Я решил подобную ситуацию инным способом. С помощью std::tuple.

template<class Tag, class Type>
struct TagValue{
  using tag = Tag;
  using type = Type;
  Type value;
  TagValue(Type &value) :   value(value){}
  TagValue(Type &&value) : value(forward<Type>(value) ){}
};

template<class Tag, class Type>
using tv = TagValue<Tag, Type>;   // сокращенная запись

// type autodetect
/// call this to auto deduce &/&&
template<typename _tag, typename T>
TagValue<_tag, T> mtv(T &&value){
    return TagValue<_tag, T>( std::forward<T>(value) );
}


Затем
namespace tags{
   class three;
}
using  namespace tags;

auto list = make_tuple(
   tv<class one, int>(1) , 
   mtv<class two>(2),        // либо
   mtv<three>(3)             // либо  (если class three уже используется, можно не объявлять в namespace tags)
 )

int num2 =  tuple_get_tag<class two>(list);
int num3 =  tuple_get_tag<three>(list);


tuple_get_tag — ф-ия которая фозвращает TagValue::value для заданого tag (compile-time, аналог std::get<> ).
Получается что то вроде compile-time hash-map.

P.S. если значения константные и типа int, можно либо использовать std::integral_constant, либо сделать структуру TagInt, аналогичную TagValue. (в обоих случаях будет полный compile-time).
В вашей схеме есть излишества, ведущие к потенциальным уязвимостям. Например, ваш клиент вычисляет md5(md5(secret | clientSalt) | challenge) — зачем, когда можно вычислять md5(secret | clientSalt | challenge)? В вашем случае, если каким-то образом утечет md5(secret | clientSalt) (с сервера, например, потому что сервер хранит именно md5(pass + salt)), появляется возможность использовать его повторно, а это критическая уязвимость.

Сервер генерирует challenge, используя ip — зачем? Соль должна быть случайна, а если соль случайна, её придется временно хранить. Если так, то добавление ip излишне, можно просто отправлять длинную случайную строку и хранить её на время проведения аутентификации.

В правильном случае сервер отправляет клиенту длинную случайную строку, которая никак не связана с любыми характеристиками клиента — challenge. Клиент вычисляет response = md5(salt | secret | challenge) и отправляет серверу response и salt, где последняя — это длинная случайная строка, которую генерирует сам клиент. Сервер, зная secret, salt и challenge повторяет вычисление у себя и либо отшивает клиента, либо аутентифицирует его.

Очевидный недостаток — пароли хранятся в открытом виде :), а ведь именно этого мы и пытались избежать. Зато это самый всамделишно-настоящий CHAP! :) Поэтому есть вариант лучше, вот его протокол:

1. Пользователь вводит некий пароль password.
2. Генератору ECDSA-ключей скармливается pbkdf2(password) — на выходе получаем secret и public.
3. Клиент говорит серверу — «Привет, я vasya@yandex.ru»
4. Сервер проверяет, есть ли у него в базе публичный ключ vasya@yandex.ru, и если да, то говорит клиенту — «Окей, держи длинную случайную строку challenge и некий последовательный счетчик seq, на который ты не можешь влиять и который растет монотонно, никогда не повторяясь».
5. Клиент вычисляет response = ecdsaSign(secret, challenge | seq | длинная случайная строка) и отправляет подписанное сообщение серверу.
6. Сервер отбрасывает соль, сверяет, что challenge совпадает с отправленным ранее, и проверяет публичным ключом, извлеченным из БД, что подпись верна.
7. Готово!

В этом случае сервер не знает ни пароля, ни его хэша, и пароль никогда не передается никуда даже во время регистрации. Наличие счетчика обеспечивает неуязвимость к replay-атакам даже в случае дублирующегося challenge. MITM при этом, правда, возможен, так что этот протокол всё равно нужно пускать поверх TLS, чтобы клиент был уверен, что говорит с сервером, а не с хакером.
Я для проверки анализа плюсов в IDE пользуюсь таким вот кодом:

template<size_t N = sizeof(void*)> struct a;

template<> struct a<4> {
    enum { b };
};

template<> struct a<8> {
    template<int> struct b {};
};

enum { c, d };

int main() {
    a<>::b<c>d;
    d;
}


После чего переключаю target с 32-битного на 64-битный в настройках проекта, и смотрю, что будет в редакторе. Если все реализованно корректно, то первая строка в main должна менять смысл с объявления переменной «d» на выражение с двумя операторами < и >, и обратно. Соответственно, семантическая подсветка должна соответствующим образом подкрашивать «d» либо как как локальную переменную, либо как член enum'а; и всякие там Go to Definition, Find References, и наличные рефакторинги вроде Rename, должны корректно отрабатывать.
1
23 ...

Информация

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