Поиск по Stack Overflow из командной строки


Оглавление (нажмите, чтобы открыть):

Поиск файлов через командную строку

У многих людей командная строка ассоциируется с «древними» приложениями DOS. Тем не менее, в процессе оптимизации командная строка может стать вашим лучшим другом. К примеру, с помощью утилиты FindStr вы очень быстро найдете интересующие вас файлы. Однако к достоинствам FindStr относится не только высокая скорость, но и низкое потребление ресурсов, в том числе ресурсов процессора, оперативной памяти и дискового пространства.

Зачастую утилиты командной строки могут решать задачи, которые невозможно решить средствами утилит графического интерфейса, по крайней мере, без значительных усилий. Так, вы можете сравнить содержимое двух файлов при помощи графической утилиты, но команда Comp сделает это быстрее. Кроме того, графические утилиты трудно использовать в сценариях, а также включать в командные файлы для параллельного выполнения нескольких задач. Утилиты командной строки в этом отношении прекрасно себя зарекомендовали.

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

Как выполнить команду

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

  1. Откройте проводник.
  2. Вызовите диалоговое окно Свойства папки с помощью команды Сервис — Свойства папки.
  3. Перейдите на вкладку Типы файлов и найдите в списке пункт Папка — только не перепутайте его с пунктом Папка с файлами.
  4. Щелкните на кнопке Дополнительно. На экране появится диалоговое окно Изменение свойств типа файлов. Это окно позволяет добавлять новые команды к определенным типам файлов, включая системные типы, такие как папки.
  5. Щелкните на кнопке Создать. Вы увидите диалоговое окно Новое действие, в котором будет нужно ввести имена действия и реализующей его команды.
  6. Введите в поле Действие текст Командная строка.
  7. Введите в поле Приложение, исполняющее действие команду cmd.exe /k \ «cd %1\». Аргумент /k предписывает программе cmd.exe выполнить команду и оставить свое окно открытым. В данном случае задана команда перехода в папку (cd), а в роли папки выступает текущая папка (%1).
  8. Трижды щелкните на кнопке ОК, чтобы закрыть диалоговые окна Новое действие, Изменение свойств типа файлов и Свойства папки.

Теперь в контекстном меню папки, появляющемся при щелчке правой кнопкой мыши на папке в проводнике, будет присутствовать новая команда с названием Командная строка. Выберите ее, и для выбранной папки откроется окно командной строки. Этот прием позволяет не заботиться о вводе множества команд только для того, чтобы перейти в нужное место жесткого диска — просто переходите туда и начинайте работать!

Поиск текста в файлах через командную строку Windows

Недавно мы рассматривали поиск файлов через командную строку Windows. Сегодня поговорим о том, как найти внутри файлов нужный нам текст. Сделать это можно при помощи команды FIND.

Команда find сообщает имена файлов, в которых был найден искомый файл, и выводит строки, в которых он содержится.

Синтаксис команды find :

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] «искомый_текст» [путь_к_файлу]

V — вывод всех строк, НЕ содержащих искомый текст;

C — вывод только общего числа строк, содержащих искомый текст;

N — вывод номеров строк;

I — поиск без учёта регистра символов;

OFF[LINE] — не пропускать файлы с атрибутом «автономный».

Для примера проверим все текстовые файлы в каталоге C:\test\ на наличие слова «текст».

Если посмотреть на скриншот ниже, то можно подумать, что ни один из файлов не содержит слова «текст». Конечно, это вполне допустимый вариант. Но есть и другое объяснение.

Дело в том, что по умолчанию текст в командной строке Windows отображается согласно кодовой странице CP866, а в файлах он в кодовой странице CP1251. Поэтому нам достаточно сменить кодовую страницу в текущем окне командной строки. О том, как это сделать, можно прочитать в статье по этой ссылке.

Теперь мы видим, что слово «текст» встречается во всех трёх файлах.

Теперь посмотрим на строки, в которых нет слова «текст»:

Такие оказались только в файле FILE_1.TXT.

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

На скриншоте ниже хорошо видно, что сперва команда не нашла слова «Текст» в файлах, так как в них оно записано без заглавных букв. Добавив /i , мы это исправили.

Допустим, нам нужно знать порядковые номера строк, в которых отсутствует слово «текст»:

Если мы захотим знать число строк, в которых присутствует искомое слово, тогда выполним команду:

А если нам нужно знать число строк, где это слово отсутствует, тогда пример команды такой:

Хотя до этого в примерах мы искали отдельное слово, find спокойно ищет и выражения:

Особенностью команды find является то, что искомый текст обязательно нужно заключать в кавычки. Это приводит к трудностям, если в пути к файлам (и в именах файлов) содержится пробел. В таком случае нужно воспользоваться перенаправлением ввода, но только если мы ищем в конкретном файле.

Как видите, наличие пробела в имени каталога C:\test test\ не помешало осуществить поиск. Но это что касается поиска в файле file_1.txt. А вот попытка поискать сразу во всех файлах привела к ошибке.

В таком случае можно воспользоваться циклическое обработкой, к примеру, командой for :

Помните, что в этом случае в командной строке нужно использовать конструкции вида %a, а в файлах .bat и .cmd вида %%a.

До этого в примерах мы всегда указывали в каких файлах искать. Если этого не сделать, то команда find выполняет поиск в тексте консоли или в тексте, который был передан по конвейеру другой командой.

Для следующего примера вернём кодовую страницу CP866. После этого отсортируем вывод команды ipconfig /all — оставим только те строки, где содержится слово «Состояние»:

Здесь мы лишь пробежались по вершинам, но возможности команды find гораздо больше. Особенно, если использовать её в комплексе с другими командами.

Поиск файлов из командной строки :: Хранитель заметок

Поиск файлов из командной строки

Главным инструментом для поиска файлов служит утилита find. Она имеет множество параметров, которые позволяют задавать различные условия.

Поиск по имени файла

домашняя папка пользователя в качестве начального пути для поиска

поиск по имени файла


Так же можно делать поиск по части имени

У параметра name есть альтернатива iname — игнорирование регистра символов.

Поиск по дате и времени

У файлов учитывается время создания (create), доступа (access) и изменения (modification). Соответственно параметры поиска начинаются с первых букв соответствующих английских слов.

Ищем файлы в текущей папке, которые открывались менее 30 минут назад.

Ищем файлы в текущей папке, время создания которых отличается от текущего на 2 часа.

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

Поиск по размеру

Эта команда выдаст список файлов, размер которых больше 10 мегабайт.

А эта — список файлов, размер которых меньше 10 килобайт.

Поиск по содержимому файла

Утилита find сама не осуществляет поиск по содержимому, но ее можно использовать, чтобы задать другие граничные условия поиска. А внутри файла можно найти строку с помощью утилиты grep.

Найдем файлы в домашней папке пользователя, размер которых меньше 10 килобайт и содержащих строку «hello»

имена файлов будет разделены символом \0

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

строки разделены символом \0

Подробнее о параметрах

Все параметры и их значения можно узнать из документации по соответствующим утилитам

Поиск через Stackoverflow.com из командной строки/bash

Как говорится в названии, я ищу способ поиска через stackoverflow.com, используя только командную строку, конкретно использующую bash в linux.

Мастер Йода рекомендует:  Палитра цветов - памятка для начинающих

Что мне нужно сделать:

Мне просто нужно получить 10 лучших ответов для моего вопроса или даже 5 лучших.

Обычный текстовый вывод, т. е. полоса HTML, если это возможно.

Также я предпочел бы, если бы вы не дали ответа, который требовал бы elinks или чего-то подобного.

Поиск текста в файлах из командной строки

Если вы хотите найти определенный текст в файлах из командной строки, вы можете использовать нативную команду Windows findstr.

Findstr — это встроенный инструмент операционной системы Windows, который вы можете запускать из командной строки для поиска текста в файлах или в выводах командной строки.

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

Поиск текста в файлах из командной строки с findstr

Вы можете запустить findstr из командной строки или командных файлов. Откройте командную строку, нажав на клавишу Windows, и наберите в ней cmd.exe.

Полезные параметры для поиска текста в файлах из командной строки с findstr:

  • /? — отобразить текст справки
  • / S — ищет каталог и все подкаталоги
  • / I — поиск не чувствителен к регистру
  • / R — использовать строки поиска в качестве регулярных выражений
  • / B — соответствует шаблонам в начале строк
  • / P — пропускать файлы с непечатаемыми символами
  • / V — печатать только строки, содержащие совпадение
  • / N — распечатать номер строки

Список примеров, которые могут оказаться полезными:

  • ipconfig | findstr «192.168» — команда запускает ipconfig и возвращает любой результат, соответствующий 192.168. Любой другой результат игнорируется.
  • netstat | findstr «123.123.123.13» — запускает команду netstat и возвращает любой результат, соответствующий строке (в данном случае IP-адрес).
  • findstr / c: «windows 10» windows.txt — Ищет документ windows.txt для строки «windows 10»
  • findstr «windows 10» windows txt — Ищет слова «windows» или «10» в файле.
  • findstr «windows» c:\documents\ *. * — Ищет любой файл под c:\documents для строки «windows».
  • findstr / s / i Windows *. * — Поиск каждого файла в текущем каталоге и всех подкаталогах для слова Windows, игнорирующего регистр букв.
  • findstr / b / n / r / c: «^ * FOR» * .bas— Возвращает любую строку, начинающуюся с FOR, которой предшествует ноль или больше пробелов. Также печатает номер строки.


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

Запустите findstr /? из командной строки для отображения всех параметров и опций, поддерживаемых «Find String».

Поиск текста в файлах в командной строке

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

Заключение

Главное преимущество Findstr в том, что это встроенный инструмент, который можно запускать на любой машине Windows. Уметь быстро находить текст в файлах — полезно. Findstr также служит инструментом для фильтрации вывода инструментов командной строки.

Если же вам необходим поиск текста в файлах без привязки к командной строке, то вам помогут сторонние инструменты, такие как Notepad ++, GGRep или Everything.

Утилиты find и findstr — поиск через командную строку

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

В былые времена, когда я был еще полным чайником в компьютерах, мне пришлось услышать про волшебные “виртуальные диски”. В то время размер моего винчестера составлял 2 гигабайта, и на счету был каждый байт, я каждую картинки сжимал для экономии места, зато в системе был один фильм и одна игра “Age Of Empires 2”, я ее уже раз сто проходил. Так вот, я почему то решил, что “виртуальный диск”, это дополнительная память, которая может появится из воздуха… Где то два дня пытался всячески установить через Диспетчер устройств еще один винт на 500 метров, при том, что такого оборудования в системном блоке и подавно не было…

Утилита find командная строка

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] «искомые_значения» [[диск:][путь]имя_файла[ . ]]

И так, смотрим на описание ключей:

[/V] – произвести вывод всех строк, которые НЕ содержат заданной.

[/C] – выводится только общее число строк, содержащих заданную.

[/N] – Вывод номеров отображаемых строк.

[/I] – Поиск без учета регистра символов.

[/OFF[LINE]] – Не пропускать файлы с установленным атрибутом «Автономный».

«искомые_значения» – собственно, строчка, поиск которой производится из командной строки Windows

[[диск:][путь]имя_файла[ . ]] – тут мы прописываем один или несколько имен документов, в которых нужно произвести поиск через командную строку, можно использовать подстановочные знаки.

Хорошо, теперь давайте попробуем написать несколько примеров.

Создадим на диске D:\ папку TEST, в который благополучно поместим три файла с расширениями .pdf, .txt и .mf. Для начала попробуем найти слово «const» во всех документах с расширением txt:

FIND «const» D:\TEST\*.txt

На выходе мы получим следующую информацию:

———- D:TESTSEND_MAIL_DATA.VBS.TXT
соnst toMSg =»to@yandex.ru» ‘получатель
соnst fromMSg =»from@gmail.com» ‘отправитель
соnst subjMsg = «Администратор» ‘субъект
соnst sndUsr =» login» ‘логин
соnst sndPswd =»password» ‘пароль
cоnst smtpSrvr = «smtp.gmail.com» ‘почтовый сервер

———- D:TESTSEND_MAIL_TEXT.VBS.TXT
cоnst toMSg =»to@yandex.ru»
cоnst fromMSg =»from@gmail.com»
cоnst subjMsg = «Администратор»
cоnst sndUsr =» login»
сonst sndPswd =»password»
сonst smtpSrvr = «smtp.gmail.com»

Как видим, мы получили список всех тех строчек, где встречается искомое слово.

Теперь попробуем сделать поиск через командную строку слова “samsung” во всех pdf файлах:

FIND «samsung» D:\TEST\*.pdf

Слово «samsung» встречается в одном документе, но, утилита FІND найти его не смогла, стоит обратить внимание, что и стандартный поиск операционной системы Windows также ничего не нашел, видимо, Google в этом все же больше преуспел.

Теперь попробуем усложнить задачу. Дело в том, что Windows ищет фразу не только в контексте файла, но и в его свойствах. Посмотрим, будет ли утилита find командной строки Windows производить поиск из описания. Я специально, по одному из каждого типа файлов (.pdf, .txt и .mf) вставлю в описание фразу «Victoria Sanremo». И так, приступим:

FIND «Victoria Sanremo» D:\TEST\*.*

В результат выполнения команды find, командная строка ничего не нашла в свойствах документов. Кроме утилиты FІND, есть еще и CMD FINDSTR, которая обладает немного большими возможностями.

Утилита FINDSTR командная строка

Утилита CMD FINDSTR предоставляется возможность осуществить поиск текста через командную строку не только в одном файле, или группе документов заданных по шаблону, но и с возможностью загрузки готового списка. И так, прежде всего, давайте посмотрим на основной синтаксис.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:файл][/C:строчка] [/G:файл] [/D:список_папок] [/A:цвета] [/OFF[LINE]] «искомые_значения»[[диск:][путь]имя_файла[ . ]]

/B – Данный ключ определяет поиск образца лишь в началах строчек.

/E — Данный ключ определяет поиск образца лишь в конце.

/R – Фразы и слова будут приниматься как регулярные выражения.

/S – Производит поиск файлов через командную строку в текущем каталоге и всех его подпапках.

/I – Данный ключ определяет, что поиск фразы из командной строки будет вестись без учета регистра.

/X – Производит вывод только тех строчек, которые содержат точное совпадение.

/V — Производит вывод только тех строчек, которые не содержат точного совпадения с искомой фразой.

/N — Производит вывод номера строчки (которые содержат точное совпадение) и ее содержимое.


/M — Производит вывод лишь имени документа, который содержит совпадение.

/O – Вывести список найденных строк через пустую строчку.

/P – Данный параметр определяет, что произойдет пропуск всех строк, которые содержат непечатаемые символы.

/OFF[LINE] — Не пропускает те документы, у которых установлен атрибут «Автономный».

/A:цвета – Шестнадцатеричный код цвета, для получения справки можете ввести команду «COLOR /?»

/F:файл – Производит чтение списка файлов из заданного документа.

/C:строчка – Использовать значение данного параметра как искомую фразу поиска.

/G:файл – Позволяет получить список строк из заданного документа.

/D:список_папок – Тут через точку с запятой мы можем задать список каталогов, в которых нужно произвести поиск через командную строку.

“искомые_значения” – Собственно, то, что мы ищем.

[диск:][путь]имя_файла — Задаем путь к документу (документам)

Что бы разделить между собой искомые фразы, между ними вставляется пробел, если параметр не содержит префикса /C. Например,

FINDSTR «Привет мир» data.txt

ищет «Привет» или «мир» в файле data.txt, а команда

FINDSTR /C:»Привет мир» data.txt

ищет фразу «Привет мир» в файле data.txt.

Регулярные выражения являются своеобразным бонусом, которым не то, что оболочка, но и язык программирования не всегда может похвастаться. При поиске из командной строки, регулярные выражения позволяют задавать собственные шаблоны (для справки по некоторым значениям введите в cmd findstr/? ), они также используются в сценариях сервера Windows Script Host, за это отвечает отдельный объект.

Мастер Йода рекомендует:  Система иконок с SVG-спрайтами

Спасибо за внимание. Автор блога Владимир Баталий

Как получить твиты из командной строки?

Есть ли простой способ получить чьи-то твиты из командной строки?

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

Без использования API, только bash.

6 ответов

Если вы не хотите использовать API Twitter, вы можете получить RSS-канал профиля Twitter, используя скрипт bash, а затем приступить к его форматированию.

С API Twitter устарел RSS-канал, вы можете обойти это, создав RSS-канал с использованием результатов поиска.

Хотя вам придется собрать необходимый скрипт bash. От загрузки RSS-канала до форматирования твитов в соответствии с вашими требованиями.

Я создал инструмент, который должен делать почти то же, что вы описали: twitter-screen-scrape . По умолчанию он выводит в формате JSON с метаданными, но тривиально направить вывод через что-то вроде underscore-cli , чтобы вычеркнуть все, что вам не нужно.

Вы можете использовать twarc , чтобы привести пример, если вы хотите архивировать твиты Нассима Николаса Талеба, которые вы используете.

Вы также можете использовать другие форматы: —format

Как настроить twarc : Единственный способ получить полные твиты — использовать [ 115] к сожалению, даже если приложение прозрачное, вам необходимо выполнить начальную настройку и настройку, вам также необходимо подать заявку на API (

По состоянию на июль 2020 года вы должны подать заявку на Twitter Создайте аккаунт и получите одобрение, прежде чем создавать новые приложения.

Как только у вас есть ключи приложения , вы можете сказать twarc , что они с командой configure.

Это сохранит ваши учетные данные в файле с именем .twarc в вашем домашнем каталоге, поэтому вам не нужно будет их вводить. Если вы предпочитаете предоставлять их напрямую, вы можете установить их в среде ([ 119], CONSUMER_SECRET , ACCESS_TOKEN , ACCESS_TOKEN_SECRET ) или с использованием параметров командной строки ( —consumer_key , —consumer_secret , —access_token , —access_token_secret ).

Вы можете пройти путь python + tweepy следующим образом:

  1. Создание собственного приложения Twitter (для получения ключей API)
  2. Создание токенов доступа для вас аккаунт в твиттере
  3. Используйте такой скрипт вместе с вашими учетными данными: https://gist.github.com/yanofsky/5436496

Я только что протестировал это и прекрасно работает. Однако есть пользователи, которые защищают свои твиты, поэтому он может не позволить вам загрузить все. Но это особенность твиттера.

Ограничение по-прежнему составляет 3200, и вы получите файл CSV.

Начиная с ближайшей даты, Twitter не позволит вам войти в их API, не имея ключа OAuth. Но в качестве обходного пути вы можете использовать Search API. Это RESTful, поэтому вы можете использовать curl для получения результатов поиска в формате JSON. Например, если вы хотите получить твиты @ java и сохранить их в файле

/.tweets , можно использовать эту строку кода:

И вы можете проанализировать файл, используя любой анализатор JSON. Параметр rpp — это число твитов, которые нужно получить. callback — это функция javascript, которая должна выполняться в результирующем JSON. Если вы не используете JavaScript с API, вы можете оставить его?, Но не удаляйте его. Я вызову ошибку. Дополнительные рекомендации по поиску API можно найти на https://dev.twitter.com/docs/api/1/get/search

Существуют инструменты для анализа JSON из интерфейса командной строки. , Хотя я никогда не использовал его, я добавлю несколько ссылок на некоторые ресурсы, чтобы помочь вам найти наиболее подходящий инструмент:

И в качестве небольшой заметки, быстрее использовать некоторые Python или Ruby (или другие).

Как найти сильного разработчика с помощью StackOverflow и Kaggle


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

StackOverflow

StackOverflow — это сайт, на котором собираются IT-специалисты со всего мира (около 20 миллионов пользователей). Разработчики ресурса утверждают, что в первую очередь это самый большой форум вопросов и ответов для программистов. Люди со всего мира могут бесплатно разместить любой вопрос, касающийся сферы технологий и получить на него подробный ответ от своих коллег.

Все это делает StackOverflow отличным местом для поиска сильных разработчиков. Выявить действительно стоящих специалистов рекрутерам помогает и продуманная система рейтинга, принятая на сайте — если пользователь дает качественные ответы на технологические вопросы, то его репутация растет. У каждого пользователя есть профиль, в котором указан рейтинг — в этой вкладке можно увидеть подробную историю того, как человек заработал свои баллы, должность, количество вопросов, на которые он дал ответы.

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

Kaggle

Ещё один сайт, на котором много сильных разработчиков. По своей сути, это площадка для соревнований, на ней есть большое количество инженеров в области больших данных и машинного обучения. Различные компании размещают на этом ресурсе определённые задания, связанные с data science, которые предлагается выполнить пользователям за деньги или «за опыт». В рамках конкретного задания специалисты предлагают свои варианты решения, пользователь, предложивший лучший ответ, получает гонорар, а его рейтинг растет.

Например, компания Red Hat предлагает разработать алгоритм по классификации клиентов, которые представляют интерес для компании, на основе их деятельности и характеристик. Автор лучшего алгоритма получает 50 тысяч долларов.

В профиле у пользователей есть три раздела: соревнования, «ядро» и дискуссии. В каждом из этих разделов своя система рангов:

— соревнования — это то, о чём мы писали выше,

— «ядро» — навыки по написанию кода,

— дискуссии — это участие в различных обсуждениях.

В каждом из этих разделов есть недавно выполненные задания, а также биография, место работы, геолокация и активность на сайте по дням.

В первую очередь следует обращать внимание на место, которое пользователь занимает на сайте среди всех остальных (current rank). Кроме того, в Kaggle есть топ-100 пользователей, и если человек входит в сотню — это очень хороший показатель (всего около пяти российских юзеров попали в этот топ).

В нижней части карточки пользователя есть его биография, в которой иногда можно найти контакты этого человека.

X-RAY поиск

X-Ray search (“рентгеновский” поиск) позволяет искать конкретную информацию на определённых сайтах по заданным параметрам через традиционный поиск в Google. Например, в поисковой строке набираем site:stackoverflow.com/users location * united kingdom и находим только пользователей stackoverflow, живущих в Великобритании. Также в поле можно добавить интересующие нас навыки.

Можно ли упростить поиск

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

Чтобы упростить задачу, был разработан поисковик AmazingHiring. Это приложение, которое автоматически осуществляет поиск кандидатов по всем сервисам. То есть просматривает все источники (включая ресурсы для разработчиков, на которых довольно сложно искать кандидатов, а также LinkedIn и другие соцсети), автоматически оценивает квалификацию и подбирает кандидата, который более всего подходит компании. Оценка производится с помощью алгоритмов машинного обучения, через анализ его программного кода и рейтинга на профессиональных сайтах.

Таким образом, сервис позволяет свести к минимуму время, затрачиваемое на сёрфинг ресурсов, делая это автоматически. В том числе приложение охватывает “пассивных пользователей” — юзеров, у которых нет популярных профилей в соцсетях и которые не привыкли заявлять публично о том, что они рассматривают предложения, например, опубликовав свое резюме на работном портале.

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

Благодаря AmazingHiring для найма специалистов в IT не требуется специальных знаний, достаточно только задать начальные параметры, которым должен соответствовать кандидат. Система анализирует более 50 источников, среди которых есть и StackOverflow, и Kaggle, и составляет объединенную карточку кандидата.

Мастер Йода рекомендует:  Представлены результаты опроса Python Developers Survey 2020

Для того, чтобы попробовать сервис, запросите бесплатную демо-версию!

Поиск файлов через командную строку

У многих людей командная строка ассоциируется с «древними» приложениями DOS. Тем не менее, в процессе оптимизации командная строка может стать вашим лучшим другом. К примеру, с помощью утилиты FindStr вы очень быстро найдете интересующие вас файлы. Однако к достоинствам FindStr относится не только высокая скорость, но и низкое потребление ресурсов, в том числе ресурсов процессора, оперативной памяти и дискового пространства.

Зачастую утилиты командной строки могут решать задачи, которые невозможно решить средствами утилит графического интерфейса, по крайней мере, без значительных усилий. Так, вы можете сравнить содержимое двух файлов при помощи графической утилиты, но команда Comp сделает это быстрее. Кроме того, графические утилиты трудно использовать в сценариях, а также включать в командные файлы для параллельного выполнения нескольких задач. Утилиты командной строки в этом отношении прекрасно себя зарекомендовали.

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

Как выполнить команду

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

  1. Откройте проводник.
  2. Вызовите диалоговое окно Свойства папки с помощью команды Сервис — Свойства папки.
  3. Перейдите на вкладку Типы файлов и найдите в списке пункт Папка — только не перепутайте его с пунктом Папка с файлами.
  4. Щелкните на кнопке Дополнительно. На экране появится диалоговое окно Изменение свойств типа файлов. Это окно позволяет добавлять новые команды к определенным типам файлов, включая системные типы, такие как папки.
  5. Щелкните на кнопке Создать. Вы увидите диалоговое окно Новое действие, в котором будет нужно ввести имена действия и реализующей его команды.
  6. Введите в поле Действие текст Командная строка.
  7. Введите в поле Приложение, исполняющее действие команду cmd.exe /k \ «cd %1\». Аргумент /k предписывает программе cmd.exe выполнить команду и оставить свое окно открытым. В данном случае задана команда перехода в папку (cd), а в роли папки выступает текущая папка (%1).
  8. Трижды щелкните на кнопке ОК, чтобы закрыть диалоговые окна Новое действие, Изменение свойств типа файлов и Свойства папки.

Теперь в контекстном меню папки, появляющемся при щелчке правой кнопкой мыши на папке в проводнике, будет присутствовать новая команда с названием Командная строка. Выберите ее, и для выбранной папки откроется окно командной строки. Этот прием позволяет не заботиться о вводе множества команд только для того, чтобы перейти в нужное место жесткого диска — просто переходите туда и начинайте работать!

Анатомия атаки: Как я взломал StackOverflow

Исходные данные

В то время я работал в небольшой компании, где имелся фаервол с совершенно драконовскими ограничениями. Он резал все заголовки запросов и ответов, не соответствующие спецификации HTTP/1.1 (и даже резал валидные HTTP/1.1 заголовки). Это играло злую шутку с сайтами, которые полагаются на такие вещи, как X-Requested-With . Поэтому, для своих «внешних похождений», я настроил прокси.

У меня было несколько серверов в то время, так что я просто поставил на одном из них Squid. Так как я кое-что соображал, я разрешил подключения к прокси только с 127.0.0.1 . Я поднял SSH туннель к серверу и указал браузеру localhost в качестве прокси. Браузер подключался к туннелю, который подключался к Squid’у на сервере. Все было отлично. Кроме того, что весь мой трафик шифровался, я получил возможность нормально пользоваться сайтами.

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

Атака

В то время я часто бывал в чате StackOverflow. Тогда он еще только появился, и в нем была парочка багов. В один прекрасный день сайт начал показывать мне стек вызовов. Я не придал этому значения, так как часто встречался с этим по всему интернету. Вообще-то, почти каждый раз, когда я получал сообщение об ошибке на сайте, написанном на ASP.NET, я видел стек вызовов.

И тут я заметил новый пункт меню в чате. Этот новый пункт меню назывался «Admin». Чисто из любопытства, я нажал на ссылку, полагая, что мне будет отказано в доступе. То, что произошло дальше, удивило меня. Я получил полный доступ ко всему. У меня была консоль разработчика, где я мог видеть кто что делает. У меня был интерфейс для работы с базой данных, где я мог напрямую запрашивать что угодно из любой базы данных. Я получил полные админские права.

Что произошло дальше

Следующее, что я сделал — сразу сообщил об этом модератору. Через несколько минут я был в приватном чате с модератором, а также двумя разработчиками. Причина была найдена приблизительно в течение 10 минут. Еще через 10 минут проблема была решена поверхностно. На полное исправление ушла пара часов. Они отлично сработали. У меня до сих пор лежит лог того чата, и я хочу сказать, что эти разработчики заслуживают всяческих похвал. Они ответили быстро и профессионально. И решили проблему в кратчайшие сроки.

Уязвимость

Если вы сообразительны, то, скорее всего, догадались, что произошло. Так как я выходил через прокси, к моим запросам добавлялся заголовок X-Forwarded-For . Значением этого заголовка был IP с которого запрашивался прокси-сервер. Но, так как я подключался к прокси через SSH туннель, IP был локальный. Так что Squid добавил X-Forwarded-For: 127.0.0.1 …

Но самое интересное было то, что показывал ASP в логах. Когда они посмотрели дампы моих запросов, там красовалась запись REMOTE_ADDR: 127.0.0.1 ! В их приложении все проверки заголовков были реализованы правильно. Но IIS был неправильно настроен и он перезаписывал REMOTE_ADDR значением X-Forwarded-For , если тот присутствовал. И благодаря такой вот ошибке конфигурации я смог получить доступ к админке, при помощи моего прокси-сервера.

Выводы

Никогда не полагайтесь на X-Forwarded-For , как мы видим — это не безопасно. Всегда используйте REMOTE_ADDR . Здесь стоит задуматься, нужна ли вам вообще защита, основанная на IP. Или, по крайней мере, не стоит на нее полностью полагаться, а использовать лишь как дополнительную меру.

Интересно отметить, что разработчики действительно использовали надлежащую проверку заголовков. Суть в том, что вы никогда не должны слепо доверять вашей инфраструктуре. Эта дыра появилась из-за разницы конфигурации между сервером и приложением. Такие мелочи случаются каждый день. Приложение предполагает одно, а сервер — другое. Проблема в том, что такое доверие может полностью подорвать безопасность. В этом случае, разработчики доверяли значению REMOTE_ADDR (вполне обосновано), но сервер был неправильно настроен. Конечно, есть ситуации, когда вы должны доверять серверу или другим компонентам, но надо помнить о том, что слепое доверие — это не очень хорошая вещь. Подумайте об этом, и постарайтесь застраховаться от подобных случаев.

Команда StackOverflow великолепно решила этот вопрос. Быстро, отзывчиво и разумно. Они попросили меня о помощи (которую я с удовольствием предоставил), и вели себя профессионально и уважительно. Они проделали фантастическую работу. Мы все должны извлечь урок. Реагировать на сообщения о уязвимостях серьезно. Решать вопрос профессионально и быстро.

Что касается PHP

Самое интересное здесь то, что приложения, написанные на PHP, могут иметь такую же уязвимость. Смотрим Symfony2 Request class. Выглядит отлично. Пока вы не заметите, что он использует статическую переменную, чтобы определить, следует ли доверять прокси. Это означает, что если любая часть вашего приложения захочет получить заголовки от прокси (например, для записи в лог), все ваше приложение после этого будет получать загловоки именно от прокси. Чтобы увидеть, подвержен ли ваш код подобной уязвимости, поищите в нем вызов $request->trustProxy() . Также обратите внимание, что обратного механизма нет. Вы не можете «перестать доверять» прокси. Я думаю, это большой архитектурный просчет…

Zend Framework 2 поступает аналогично. Он имеет класс, который ведет себя похожим образом (в плане получения IP). Интересно, что в Zend Framework 1 способ получения IP-адреса был адекватным. Вызывающий код должен явно указывать что он хочет получить, а по-умолчанию должен быть безопасный вариант.

Добавить комментарий