LINUX.ORG.RU

Избранные сообщения Qwentor

Поиск похожих картинок

Форум — Development

Недавно всплывал вопрос о поиске одинаковых картинок. Я хотел применить ImageMagick, но сломал голову его инструкцией и решил начать с решения попримитивнее. Питон 3.10 с установленными пакетами NumPy, Pillow и python-magic. Каждая картинка конвертируется в 24-битную 20x20, затем считается евклидово расстояние между каждой парой картинок (как корень из суммы квадратов разностей для каждого байта). Дефолтное MAX_IMAGE_PIXELS оказалось недостаточным для крупных сканов. Для простоты ограничился типами PNG, JPEG и GIF и файлами только в текущей директории — если нужно что-то сложнее, os.listdir() нужно заменить на соответствующий список или генератор, например, [os.path.join(root, file) for root, dirs, files in os.walk(os.getcwd()) for file in files] или [r + '/' + f for r, _, files in os.walk('.') for f in files].

import os, magic
import numpy as np
from PIL import Image

thumb_size = 20
max_distance = ( 256**2 * thumb_size**2 * 3 )**0.5  
allow_magic = {'PNG image ', 'JPEG image', 'GIF image '}
Image.MAX_IMAGE_PIXELS = 400_000_000

names = sorted( name for name in os.listdir() if os.path.isfile(name) and magic.from_file(name)[:10] in allow_magic )
thumbs = [ Image.open(name).convert(mode='RGB').resize((thumb_size, thumb_size)) for name in names ]
td = [ np.frombuffer(thumb.tobytes(), dtype=np.int8) for thumb in thumbs ]

table = np.full((len(names), len(names)), max_distance, dtype=np.float64)
for nout, hout in enumerate(td):
    for nin, hin in enumerate(td[nout+1:]): 
        table[nout, nin + nout + 1] = np.linalg.norm(hout - hin)

Для идентичных картинок расстояние равно нулю. Для отличающихся размером и артефактами сжатия — существенно меньше 100. Пока ни разу не видел расстояния больше 3500.

Дальше нужно просматривать похожие пары. Дефолтный просмотрщик меня не устроил, поэтому nomacs. Для нулей я вызывал

m = table.min(); r = np.where(table == m); print(m, r);
for x, y in zip(r[0], r[1]): print(names[x], names[y]); os.system( f'nomacs "{names[x]}" & nomacs "{names[y]}"' )

А разобравшись с файлами, заменил все нули на недостижимо большую величину:

table[r] = max_distance

Для расстояний больше 0 вручную повторял однострочник

table[r] = max_distance; m = table.min(); r = np.where(table == m); print(m, r); x, y = r[0]; names[x], names[y]; os.system( f'nomacs "{names[x]}" & nomacs "{names[y]}"'

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

Для 20 000 картинок, из которых большинство размером 100-1000 пикселов, и которые прочлись в кеш, время вычисления на 1,8 ГГц ядре:
name (определяется magic.from_file) — 10 с,
thumbs (Image.open + Image.convert + Image.resize) — 272 c,
td (np.frombuffer + thumb.tobytes) — 0,3 с,
table — 3276 c.

Как-то улучшить можно? Ускорить?

 

question4
()

Вебные аналого-цифровые индикаторы.

Форум — Web-development

По итогам Есть ли что-то типа Grafana только на порядки легче и проще?

Написал ещё тогда и забыл. Ну пусть новогодний подарочек будет.

Продолжаем делать правильный вебдваноль. Как обычно, всё очень маленькое (2.5kb) и шустрое, на plain JS без каких-либо «фреймворков» и прочего многотонного жирного говна. Легко влезает в эмбедщину всякую и т.п.

Итак…

gauge.js

'use strict'

function Gauges( class_name )
{
    var _ = this;
    _.urls = [];
    var gauge = document.getElementsByClassName( class_name );
    for( var j = gauge.length; j--; )
    {
        var e = gauge.item(j);
        var g = JSON.parse( e.getAttribute( "data-conf" ) );
        if( !g ) return;

        g.id = e.id;
        g.title = e.title;
        e.removeAttribute( 'title' );

        var c = g.size / 2;
        var r = 0.8 * c;
        var l = 2 * Math.PI * r;

        for( var i = _.urls.length; i--; ) { if( _.urls[i].url == g.url ) break; }
        if( i < 0 ) _.urls.push( { url: g.url, gauges: [ g ] } );
        else        _.urls[i].gauges.push( g );

        e.innerHTML =
            '<svg width="' + g.size + '" height="' + g.size + '">'
          + '<circle class="gauge-bg" id="' + g.id + '-bg" cx="' + c + '" cy="' + c + '" r="' + r + '" stroke-dasharray="' + ( 2 * l / 3 ) + " " + ( l / 3 ) + '" stroke-dashoffset="' + ( -5 * l / 12 ) + '"/>'
          + '<circle class="gauge-pnt" id="' + g.id + '-pnt" cx="' + c + '" cy="' + c + '" r="' + r + '" stroke="' + g.color + '" stroke-width="' + ( 0.1 * g.size ) + '" stroke-dasharray="0 1"/>'
          + '<text class="gauge-val" id="' + g.id + '-val" fill="' + g.color + '" x="' + c + '" y="' + ( 1.1 * c ) + '" font-size="' + ( 0.45 * r ) + '" text-anchor="middle"></text>'
          + '<text class="gauge-title" x="' + c + '" y="' + ( c + r ) + '">' + g.title + '</text>'
          + '</svg>';
    }

    _.urls.forEach( function( u )
    {
        _.update( u );
        setInterval( function(){ _.update( u ) }, u.gauges[0].int );
    } );
}

Gauges.prototype.set = function( id, min, max, val )
{
    var e = document.getElementById( id + '-pnt' );
    if( !e ) return;

    var r = e.getAttribute( 'r' );
    var l = 2 * Math.PI * r;
    var v = val < min ? min : val > max ? max : val;
    var dash = ( 2 / 3 ) * l * ( v - min ) / ( max - min );

    e.setAttribute( 'stroke-dasharray', [ dash, l - dash ]);
    e.setAttribute( 'stroke-dashoffset', (-5 / 12) * l );

    document.getElementById( id + "-val" ).textContent = val;
}

Gauges.prototype.update = function( u )
{
    var _ = this;
    var req = new XMLHttpRequest();
    req.onreadystatechange = function()
    {
        if( this.readyState != 4 ) return;
        var obj = JSON.parse( this.responseText );
        if( !obj ) return;
        u.gauges.forEach( function( g )
        {
            var v = g.path.split('.').reduce( function( o, k ) { return o && o[k] }, obj );
            _.set( g.id, g.min, g.max, v.toFixed( g.prec ) );
        } );
    };
    req.open( "GET", u.url );
    req.send();
}

gauge.css

@font-face {
    font-family: "7SEG";
    src: url("DSEG7Classic-BoldItalic.ttf") format("opentype");
}

.gauge-pnt {
  fill: transparent;
}

.gauge-bg {
  stroke: #808080;
  stroke-width: 1px;
  fill: transparent;
}

.gauge-val {
    font-family: "7SEG", serif;
}

.gauge-title {
    text-anchor: middle;
    fill: #C0C0C0;
}

Шрифт DSEG7Classic-BoldItalic.ttf ради прикола, можно из дебиановского пакета fonts-dseg взять. Или в формате woff2, он размером поменьше будет.

Как использовать:

<HTML>
<HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" content="no-cache">
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8">
<LINK rel="stylesheet" type="text/css" href="gauge.css">
<SCRIPT src="gauge.js" type="text/javascript"></SCRIPT>
<SCRIPT>
var ups_gauges;
window.addEventListener( 'load', function() { ups_gauges = new Gauges( 'ups' ); }, false );
</SCRIPT>
<STYLE>
a.ups { outline: none; }
body { background-color: #000000; color: #c0c0c0; }
</STYLE>
<TITLE>Gauge</TITLE>
</HEAD>
<BODY>
<a href="ups/voltage.html" class="ups" title="UPS Vin, V"  id="Vin" data-conf='{"url":"data/ups.json","path":"Vin","int":20000,"min":0,"max":300,"prec":0,"color":"#40C040","size":150}'></a>
<a href="ups/load.html"    class="ups" title="UPS Load, %" id="Load" data-conf='{"url":"data/ups.json","path":"Load","int":20000,"min":0,"max":100,"prec":0,"color":"#C040C0","size":150}'></a>
<a href="ups/temp.html"    class="ups" title="UPS T, °C"   id="Temp" data-conf='{"url":"data/ups.json","path":"Temp","int":20000,"min":0,"max":100,"prec":1,"color":"#C0C0C0","size":150}'></a>
</BODY>

data/ups.json

{ "Vin": 193.2, "Load": 40, "Temp": 38.0 }

В аттрибут data-conf элемента который превращаем в индикатор пишем JSON где

url - URL источника данных для индикатора в формате JSON
path - "путь" в JSON до нужной величины, например "sensors.0.temp"
int - интервал обновления в миллисекундах
min - минимальное значение аналоговой шкалы индикатора
max - максимальное значение аналоговой шкалы индикатора
prec - число цифр после запятой для цифрового индикатора 
color - цвет индикатора
size - размер индикатора

У элементов превращаемых в индикаторы должен быть установлен аттрибут id.

В аттрибуте title указывается подпись под индикатором.

Элементам индикаторов одной группы присваеваем один класс и его имя передаём в конструктор new Gauges('class_name') когда нужно создать и запустить индикаторы.

Если у нескольких индикаторов одного и того же класса URL источника данных одинаковый, то запрос к этому URL при периодическом обновлении будет только один, но при этом будут обновлены все индикаторы этого класса с этим URL.

Выглядит так: http://stanson.ch/gauges.png

Лицнзия WTFPL

 , копрофагия

Stanson
()

Исследование дна (Земля кочевников)

Форум — Talks

Кто не смотрел рассказываю, синий американский воротничок поняв что жизнь в режиме 5/8 работа-дом более не привлекает, покупает дом на колесах (стоимостью $5000, это важно) и постигает красоту родной американской природы 7/24 зарабатывая в каждом новом регионе пребывания малоквалифицированным трудом, трудоустраиваясь на 1-2 недели.

Что хотел узнать, а в РФ такое возможно?

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

Столлман здесь при том, что это реально FREE AS FREEDOM, вдохновил меня фильм, хотя если бы он не взял Оскар, скорее всего я бы о нем не узнал.

 

Shulman
()

паспорт скоро будет не нужно

Форум — Talks

В московском аэропорту Шереметьево проведут эксперимент с введением новой системы контроля при посадке пассажиров в самолет.

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

Также сообщается, что благодаря установке турникета с камерой, который моментально определяет личность пассажира, больше не нужно будет предъявлять посадочный талон и паспорт при посадке.

Как пояснили источники, контроль будет проводиться при загрузке на тестовый внутренний рейс «Аэрофлота» и позволит сократить количество контактов между людьми. «Это в том числе важный фактор ограничения распространения инфекций», — заявил представитель «Аэрофлота» Михаил Демин.

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

https://lenta.ru/news/2021/04/28/systemakontrolya/

 

Jopich1
()

Ядрышко 5.12 и intel HD

Форум — General

помогите тормозу ускориться.

В ядре 5.12 ввели новую опцию: drm/i915: Allow the sysadmin to override security mitigations

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f7452c7cbd5b5dfb9a6c84cb20bea04c89be50cd

что надо прописать в grub?

To disable just the clear-residuals mitigation (on Ivybridge, Baytrail, or Haswell) use the module parameter: i915.mitigations=auto,!residuals

 ,

shleemypants
()

Завещание мертвеца

Форум — General

Шалом.

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

И, внезапно, подумал, а нет ли готового решения?

Интересует готовое решение с возможностью отправки e-mail'ов, SMS, поддержка транспортов во всякие WhatsApp приветствуется. Периодические запросы на проверку жив/здоров необходимы, мониторинг соцсетей приветствуется.

Кто-нибудь знает такое вот?

Заранее благодарю за ответ.

 завещание

IPR
()

Невозможный артефакт — диоритовая ваза

Форум — Science & Engineering

https://planeta.ru/campaigns/diorite_vase, https://www.youtube.com/watch?v=GV1jfJ_zNkE — деньги уже собрали, поэтому не реклама.

Скульпторша в сотрудничестве с сайтом antropogenez.ru берётся изготовить диоритовую вазу при помощи инструментов каменного века. Ранее она уже выточила статуэтку с внутренней полостью из мраморной брекчии (твёрдость 3) — https://www.youtube.com/watch?v=uQqxx7ksaKc — и выдолбила прямой угол в граните. Теперь займётся более прочным материалом — твёрдость диорита ~6,5, между гранитом и кварцем. Обещает управиться за полгода. Возможно, будет онлайн-трансляция.

Планы у экспериментальных археологов грандиозные: https://sun9-4.userapi.com/c847017/v847017609/1a07ce/1AG-7IdtdtU.jpg

Дополнение: С запуском трансляции затянули на 2 месяца, поэтому я начало пропустил. Сейчас можно наблюдать процесс каждый будний день с 6 до 14 по Москве: https://www.youtube.com/watch?v=F75tsyoxMQY https://www.youtube.com/watch?v=qpQhDop_OfA https://www.youtube.com/watch?v=I26ccMbRaL8 https://www.youtube.com/watch?v=rsi8D2KG8sM https://www.youtube.com/watch?v=oPR0KsnwUYw https://www.youtube.com/watch?v=YvbnXKXVnWM https://www.youtube.com/watch?v=rS3jedWGrrY https://www.youtube.com/watch?v=S-Vs8YgxWLk https://www.youtube.com/watch?v=dAo6bHsW11s https://www.youtube.com/watch?v=S-Vs8YgxWLk https://www.youtube.com/watch?v=Qy2rquDkyHY https://www.youtube.com/watch?v=59jGlN42DMo https://www.youtube.com/watch?v=-obWwiZq2LM https://www.youtube.com/watch?v=M1TSgxLzrrc

Перемещено hobbit из talks

 ,

question4
()

странная проблема с памятью out of memory

Форум — Admin

Добрый день нужен совет.

Есть приложение go - которое падает fatal error: runtime: out of memory

Смотрю в это время top:

KiB Mem : 65401672 total,  1018996 free, 43470864 used, 20911812 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 27394280 avail Mem

Swap выключен потому что это k8s нода.

На этом сервере уже запущено 5-ть экземпляров этого приложения, запускается 6-ое. Оно достаточно быстро начинает съедать free память, но все настолько быстро что падает за 1-2 секунды, насколько я успеваю увидеть оно съедает память из free но buff/cache не трогается.

При этом я вижу что другие приложения на ноде например apt install atop падает с:

FATAL -> Failed to fork. 0%

Как-то можно что-то с этим сделать? С одной стороны вроде 20GB в кеше, но с другой стороны видимо он не успевает вытеснятся.

update 1:

Ситуация еще более странная, я почистил файловый кеш во free - 18GB, перезапускаю приложение, в топе успеваю увидеть что оно съедает 700MB и падает out of memory

Соседние точно такие-же приложения (копии) висят с потреблением памяти - 5-6GB

update 2:

При этом именно на этих нодах где падает приложение есть в логах ошибка

[Sat Nov  9 10:21:24 2019] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module net-pf-10, throttling...

Но время падения и время сообщений не совпадает, ipv6 выключен в grub

 ,

tugrik
()

Открытые митапы Percona в РФ 26 июня - 1 июля

Новости — Конференции и встречи
Группа Конференции и встречи

Компания «Перкона» (Percona) организует серию открытых мероприятий по теме open source СУБД в Санкт-Петербурге, Ростове-на-Дону и в Москве в период с 26 июня по 1 июля.

( читать дальше... )

>>> Подробности

 , , , ,

Stacy
()

повышенное чувство социальной ответственности

Форум — Talks

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

 ,

chenbr0
()

uBlock Origin обезумел, сумеешь ли ты совладать с ним?

Форум — Desktop

Здравствуйте же многие лета!

Какие-то недели назад, Firefox после запуска, стал открывать страницы с безумной задержкой. Т.е. он включился, ты открываешь первые URL и ждёшь секунд 20-30, может минуту, а только потом страницы начинают загружаться. И далее, всё открывается нормально.

Жить можно? Можно. Но неудобно. Не хочется каждый раз ждать, особенно, если тебе быстро нужно что-то посмотреть.

Сегодня стал искать причину. И выяснилось, что шкодит холеный uBlock Origin. Причём, если его активировать уже при включённом браузере - тут же начинается эта задержка открытия URL, а потом опять всё нормально.

Дело то собственно в том, что он самый нормальный блокировщик. Пользуюсь много лет, да и не один я, такого же мнения. Кто сталкивался с подобным? Может можно в настройках какую галку убрать/поставить и жизнь станет прежней?

UPD: Как подсказал namefree, нужно в настройках uBlock Origin, поставить галку «Я опытный пользователь». Появится шестерёнка, нажать на неё, далее найти параметр и прописать:

suspendTabsUntilReady no

UPD2: по всей видимости, NoScript - тоже имеет подобное поведение. Но там таких настроен не нашёл.

 , ,

th3m3
()

Как мало спать и высыпаться?

Форум — Talks

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

Дано: подъем на работу в 3:30

Требуется: высыпаться за наименьше кол-во часов и быть при этом бодрым (ПАВ не обсуждаются)

Комментарии к ТЗ: приветствуются любые решения задачи. Отмазки в стиле «нафик так жыть», «смени работу» для слабаков и просто тут лишние.

Заодно приветствуются решения как искать всякие медицинские штуки и около того в гугле и прочих отделяя нормальную выдачу от всякого невыносимо ужасного говна типа вуменсру/лайфхакер и тд. Короче что бы по теме было.

 , ,

karton1
()

Более 90% снимков десктопов в галерее хуже дефолтного оформления

Форум — Talks

Смотрю на галерею местных юзверей и эникейщиков и из глаз течет кровь. Более 90% скринов - уродливое УГ, хуже дефолтного оформления в разы. Я конечно понимаю, что хочется проверить свои силы и потягаться со специально для этого нанятыми дизайнерами и оформителями. Но этого делать не стоит.

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

 , ,

FilosofeM
()

Лучший рэп про программистов

Форум — Talks

https://www.youtube.com/watch?v=wjFgOckkVYM
Я извиняюсь, но это - шедевр.
Вот эти ребята : http://vk.com/nii_rap
Inb4: слоупок, баян. Не все такие быстрые.

 ,

crutch_master
()

автоматическая смена imei кода на телефоне

Форум — General

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

 ,

Epizot
()

proxy_py v2.1 - Сборщик проксей

Форум — Development

Прошло чуть больше 8 месяцев с предыдущего поста(Мой проект по сбору проксей) про мой сборщик проксей и чуть больше 13 с первой реализации, написанной на коленке за вечер. За это время я многое переписал

- теперь он полностью асинхронный(peewee_async вместо SQLAlchemy)

- сильно улучшилась производительность(сейчас на vds'ке за 3 евро 16к проксей)

- появилась документация и гайд по созданию коллекторов https://proxy-py.readthedocs.io/en/latest/

- больше тестов

- несколько новых коллекторов

Поставить звёздочку и сделать пулл реквест можно тут https://github.com/DevAlone/proxy_py

Чтоб потестить, есть докер контейнер:

docker create -p 55555:55555 --name proxy_py proxypy/proxy_py:v2.1
docker start proxy_py

После запуска можно делать запросы к API вот так:

http POST http://127.0.0.1:55555/api/v1/ model=proxy method=get

Так же есть веб интерфейс:

http://localhost:55555/i/get/proxy/

http://localhost:55555/i/get/proxy_count_item/

http://localhost:55555/i/get/collector_state/

http://localhost:55555/i/get/number_of_proxies_to_process/ (показывает, сколько проксей ждут проверки, зелёный график должен быть около нуля)

За год количество IP адресов, когда либо побывавших в моей программе(т.е. на них работал публичный прокси) - 218013

Планы на будущее(отсортировано по важности):

- peer to peer, чтобы инстансы proxy_py общались между собой и обменивались информацией, при этом нужен показатель доверия одного сервера другому, чем больше доверяем, тем меньше проверяем и список узлов, которым доверяем на 100% для создания своего кластера. Т.к. производительности одной машины уже не хватает. Мб кто-то знает годные либы?

- более удобный API(фильтр по полям, выбор проксей вокруг географической точки, стандартная сортировка должна выдавать не самые быстрые, а достаточно стабильные и при этом быстрые)

- нормальный веб интерфейс(мб на ангуляре)

- больше статистики(для каждого коллектора и каждого прокси)

- клиентская библиотека для питона

 , ,

devalone
()

Научпоп: что читать?

Форум — Science & Engineering

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

 , , , ,

maverik
()

Посоветуйте подобного рэпкора

Форум — Talks

Профильная тема не взлетела, так что пишу тут.

Посоветуйте чего-нибудь подобного:
https://www.youtube.com/watch?v=jjjaU5kQV8k
https://www.youtube.com/watch?v=8EYoNij0G4k
https://www.youtube.com/watch?v=PTugHhl09Kg

Чтобы было агрессивно, чуть больше метала чем рэпа, ну а метал тяжелый, а не пушистый. Ненависть ко всему и всем приветствуется.

 , ,

ozz_is_here
()

Вакансия Junior/Middle Python Developer в Москве.

Форум — Job

Компания - лидер в области разработки защищенных сервисов инфраструктуры открытых ключей приглашает принять участие в конкурсе на позицию программист-Python (Junior/Middle). Если:

1. тебе интересны задачи выходящие за рамки Web-тематики

2. тебе интересно разбираться в том, что такое электронно-цифровая подпись и как работают протоколы ее применяющие

3. ты хочешь стать частью команды практикующей Extreme Programming

4. ты обладаешь знаниями Python 3.x и опытом разработки на нем в рамках реальных проектов не менее 6-ти месяцев

5. ты имеешь базовые знания по SQL и использовал PostgreSQL

6. ты умеешь пользоваться Vim и/или EMACS

7. ты умеешь пользоваться git

8. ты комфортно себя ощущаешь в NIX (Linux/xBSD/OSX), умеешь установить и настроить свою рабочую систему

9. представляешь себе в общем как работают современные NIX-ы (например читаешь на ночь книгу «Операционная система UNIX» Робачевского или Таненбаума)

То мы ждем твоего отклика!

Мы готовы предложить:

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

Условия:

График работы: полный день Работа территориально в районе м. Марьина Роща, (5 мин. от метро).

Работа в молодом дружном коллективе.

ДМС с возможность лечиться в 10 минутах от работы.

Клубная карта в спортклуб.

Заработная плата от 60 000 рублей (по результатам собеседования).

Присылайте свои резюме info@rnd.stcnet.ru

 , ,

zis1atlas
()

Соратник / партнер

Форум — Talks

Привет всем.

Дело такое, на данный момент прохожу курс Джери Банфилда «Курс по взлому от начального до продвинутого уровня» этот курс включает установку Kali Linux, использование VirtualBox, основы Linux, Tor, Proxychains, VPN, Macchanger, Nmap, взлома wifi, aircrack, DoS attacks, SSL strip, известные уязвимости, SQL инъекции, взлом паролей Linux...

Кое-что умею уже, но хотелось бы найти партнера чтоб вместе заниматься приятным делом, для обмена опытом и тд)

Лучше если ты из Санкт-Петербурга

Перемещено jollheef из general

 , , ,

Ivan1990
()