Как программисту получить свой первый оффер |
Метки: author Ksunka132 читальный зал учебный процесс в it java offer job |
Отправляем рутину и бюрократию в прошлое или как большим и средним предприятиям оставаться на вершине айсберга |
Метки: author Tunda бизнес-модели повышение эффективности управление предприятием процессный подход |
История бренда Nike |
Метки: author Logomachine читальный зал блог компании логомашина бренд история успеха история дизайн логотип nike |
Стартап глазами разработчика. Какой framework лучше выбрать |
Метки: author EFS_programm reactjs ефс единая фронтальная система продвижение стартап сбербанк mvp react |
[Из песочницы] JetBrains MPS — IDE для разработки проблемно-ориентированных языков программирования |
public class Weather{
}
Метки: author enchantinggg программирование java mps jet brains programming languages |
Вводим рейтинг участника GitHub и StackOverflow на «Моём круге» |
|
[Перевод] Неужели люди могут писать безумный код со множеством побочных эффектов в одном выражении и не краснеть? |
a -= a *= a;
p[x++] = ++x;
a -= a *= a и p[x++] = ++x;
в уверенности, что его код великолепен?total_cost = p->base_price + p->calculate_tax();
calculate_tax
имеет тип, отличный от const
, и поэтому выполнение метода может изменить значение base_price
, а при этом важно учитывать, добавляете вы налог к первоначальной базовой цене или к обновленной. Но вы-то понимаете (обладая знаниями, недоступными компилятору), что метод calculate_tax
изменяет налоговую юрисдикцию объекта, но не влияет на базовую цену. Значит, вы уверены, что срабатывание ложное.x ^= y ^= x ^= y
не работает в C#, хотя в C++ проблем не возникает. Это ещё одно доказательство того, что люди пишут код с большим числом побочных эффектов, будучи при этом полностью уверенными в том, что результат вполне понятен, и код должен работать как часы.
Метки: author Schvepsss программирование c# блог компании microsoft microsoft c++ |
Bluetooth SIG анонсирует bluetooth mesh сеть |
Метки: author Lebets_VI децентрализованные сети беспроводные технологии bluetooth ble mesh- сеть bluetooth 5.0 |
[Из песочницы] Генерация документов — взгляд изнутри |
[1.2] Библиотечный пункт является примером, составленным г-ном [Ивановым] для демонстрации проблем, описанных в пунктах [2.3] и [3.1] ["Краткого описания"][данного изложения]
3.1 Библиотечный пункт является примером, составленным г-ном Горбунковым С.С. для демонстрации проблем, описанных в пунктах 4.1 и 4.6 "Краткого описания"
[Счетчик:X] Библиотечный пункт является примером, составленным г-ном [Наименование автора] для демонстрации проблем, описанных в пунктах [Глобальная ссылка:A][ и [Глобальная ссылка:B]] [[Альтернатива:1="Краткого описания"]|[Альтернатива:2=данного изложения]]
Метки: author PennyLane читальный зал генерация документа |
[Из песочницы] Сайт-визитка студента без затрат |
В жизни многих студентов it-специальности возникает желание устроиться на работу или стажировку в хорошую it-компанию. А для этого неплохо бы показать все свои скиллы на специально созданном сайте-визитке. Но студент, на то он и студент, обычно "бедный" и не хочет тратить деньги на покупку домена и хостинг, однако хочется всё по-взрослому (а не на Ucoze).
В этой статье я хотел бы поделиться своим опытом и опытом моих друзей, которые столкнулись с такой необходимостью, а также рассказать подробно о побочных эффектах, настройках и технологиях. Здесь не будет технических новинок, наоборот это максимально подробная и понятная статья, в которой я расскажу о лайфхаках и постараюсь объяснить технические сложности.
Начнем с получения домена. Здесь есть два способа:
Можно зарегистрировать домен в доменном зоне .ru всего за 140 рублей. Ссылку на регистратора оставлять не буду, но он легко гуглится (или найдет вас сам в контекстной рекламе после пары соответствующих запросов). На сайте регистратора вы выбираете свободный домен, покупаете, и пользуетесь целый год (это достаточно легко, не буду останавливаться подробнее). Правда продление потом будет стоить 495 рублей в год, что тоже не так дорого, относительно других регистраторов Рунета.
Он сложнее, зато вы получаете бесплатно на год домен в зоне .me. Однако, продление потом будет стоить уже $18.99 (а это больше тысячи рублей) и поморочиться придётся подольше.
Если вы студент it-специальности, слово Github уже не должно вызывать вопросов (а иначе никакой сайт-визитка не поможет). Так вот, этот самый Github помогает в нашем деле дважды. Во первых, он даёт так называемый Student Developer Pack, в котором и будет наш бесплатный домен. А, во вторых, именно средствами Githubа можно бесплатно хостить сайт (но об этом позже).
Чтобы получить этот Pack надо перейти по ссылке и залогиниться со своим аккаунтом в Github, и заполнить анкету, которая подтверждает, что вы действительно студент.
После того, как вам откроют доступ к этому пакету, заходите сюда, находите в списке Namecheap, кликаете на "Get access by connecting your GitHub account on Namecheap" и привязываете свой Github аккаунт. После будет всё та же процедура выбора свободного домена, и после подтверждения им можно пользоваться.
Спасибо GitHub за то, что он есть. Отдельное спасибо за GitHub Pages, который предоставляет возможность разместить один сайт для аккаунта и подключить свой домен бесплатно. Для этого нужно создать репозиторий с названием username.github.io, где username — имя пользователя, например AndreySBer.github.io. Сайт будет доступен по этому же адресу.
Хостинг сайта основан на ветке master git-репозитория. Каждый коммит в master приводит к его обновлению. Поэтому разработку и тестирование лучше проводить в отдельной ветке и потом через pull-request сливать в master.
Настройка своего домена начинается с его регистрации в настройках репозитория. Подробнее об этом можно почитать в документации. Основные шаги, которые надо предпринять:
1) Указать имя домена в настройках репозитория.
2) Добавить файл CNAME с именем домена.
3) В настройках домена у регистратора в пункте DNS добавить две A записи (подробнее здесь):
Связь обычно занимает небольшое время, но у некоторых регистраторов вступление в силу DNS записей занимает до суток. Также можно настроить переадресацию с субдомена www.yourdomain.ru. Как это сделать, написано здесь.
В сети есть множество сайтов, предлагающих бесплатные шаблоны визиток. Лично мне нравятся этот и этот.
Эти шаблоны построены на основе Bootstrap, есть примеры готовых блоков для страниц, адаптированы для мобильных экранов (в большинстве).
Имея базовые знания HTML, css, Bootstrap и чувство прекрасного, можно сделать вполне приличную страницу (или несколько), закоммитить их в develop ветку репозитория, протестировать на разных экранах, и затем залить в master.
Если нужен новый лендинг — повторить.
Таким нехитрым способом я сделал свой личный сайт, а также несколько страниц для учебных проектов.
Метки: author AndreySBer разработка веб-сайтов github гитхаб халява студентам веб-сайт |
Кейсы JSOC |
|
Секция безопасной разработки на PHDays VII: итоги встречи сообщества PDUG |
Мастер-класс «Трущобы Application Security»
Автоматизация построения правил для Approof
Механизмы предотвращения атак в ASP.NET Core
Формальная верификация кода на языке Си
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Требования по безопасности в архитектуре ПО
От экспериментального программирования к промышленному: путь длиной в 10 лет
Метки: author ptsecurity программирование информационная безопасность блог компании positive technologies pdug безопасная разработка разработка иб phdays positive hack days |
[Из песочницы] Как я варил CLion |
Метки: author Doktor3lo программирование c++ clion docker conan ninja gdb cmake |
[Перевод] Сила минимализма в UX дизайне |
«Вам нужно не больше пустого пространства, а меньше всего остального».
|
10 лет Школе анализа данных Яндекса |
Метки: author ashagraev учебный процесс в it блог компании яндекс школа анализа данных юбилей школы яндекса школы обучение программированию |
Эволюция атак на веб-приложения |
Атаки на веб-приложения открывают широкие возможности для злоумышленников: это и хищение критичной информации или чувствительной информации; нарушение бизнес логики для извлечения финансовой выгоды; также, успешная атака веб-приложения может быть предвестником взлома корпоративной сети компании. В этой статье я расскажу об эволюции атак веб-приложений.
Классические уязвимости в данный момент представлены списком OWASP TOP 10:
Атаки на веб-приложения применимы к данному списку, но далеко не все распространены повсеместно и встречаются каждый день.
Хорошим примером выявления той или иной уязивмости можно считатать the unofficial HackerOne disclosure timeline: http://h1.nobbd.de/index.php. Как мы видим — приобладают SQL-инъекции, client-side атаки и т.д.
Существует два типа атак: нецелевые и таргетированные. Нецелевые "бьют по площадям", и реализуют один-два вектора атак, не всегда реализую цель атаки. Как правило отличаются примитивностью. Мы наблюдаем такие атаки каждый день, представленные в виде эксплуатации той или иной уязвимости, попытки получения доступ к критичным файлам и т.д.
Таргетированные атаки отличает множество векторов, высокий профессионализм атакующих и результативность. Такие составляют примерно 5% от общего числа атак, но по эффективности они гораздо выше нецелевых.
Нецелевые атаки, как правило, автоматизированы и выполняются с помощью различных систем эксплуатации: от сканеров уязвимостей, до самописных скриптов и утилит. Отличаются, как правило, несколькими признаками (User-Agent, вектор применения, диапазон IP). Например попытка выявления /uploadify/uploadify.php — уязвимости в модуле MODX.
Статистика нецелевых атак выглядит следующим образом:
Наиболее популярные атаки:
Это касалось автоматизированных систем. Если сайт атакует злоумышленник, знающий веб-приложение и его уязвимые компоненты — атака становится более точечной и эффективной.
Эволюцию атак на веб-приложения можно рассматривать с нескольких ракурсов:
Этические рамки я оставлю вне этой статьи и хочу поговорить о технической стороне.
Появление новых векторов обусловлено использованием новых технологий либо выявлением уязвимостей в старых. Также, часть уязвимостей может оказаться "за бортом" и долгие годы не использоваться, как например XML External Entities: первые упоминания датируются 2002 годом, конкретизированные вектора 2009, массовая эксплуатация началась с 2011-2012 года практически повсеместно, например phpmyadmin. XXE уязвимости находили (в рамках BugBounty программ) на ресурсах Яндекс, Вконтакте, Uber и многих других.
Другим немаловажным фактором развития векторов атаки служат внедренные защитные средства. Мы установили уязвимое веб-приложение, указав тип уязвимости и защитили веб-приложение сервисом защиты: http://vulns.pentestit.ru.
http://vulns.pentestit.ru/wp-content/plugins/kittycatfish/base.css.php?kc_ad=31&ver=2.0"
Уязвимый параметр kc_ad. Атакующие в первую очередь пытаются выявить наличие инъекции с помощью символа кавычки, классика жанра:
Уязвимость на сайте присутствует, но проэксплутатироватть сходу ее не удастся, поэтому атакующие применяют техники тамперинга данных для попытки обхода защитных средств:
http://vulns.pentestit.ru/wp-content/plugins/kittycatfish-2.2/base.css.php?kc_ad=16+group%0aby%0a1%0aUNIO%6e%0aSELEC%74%0achar%0a(107,99,95,97,100,95,99,115,115),(selec%74%0acolumn_name%0afro%6d%0a`%69nformation%5fschem%61`.columns%0awher%65%0atable_name=0x746c5f746f6b656e%0alimit%0a0,1)
Такие методы обхода тоже не позволяют проэкспулатировать уязвимость, поэтому атакующие начинают использовать все более изощренные способы evasion-техник (о которых я писал в этой статье: методы обхода защитных средств веб-приложений при эксплуатации SQL-инъекций.
Это трансформируется в следующие запросы:
http://vulns.pentestit.ru/wp-content/plugins/kittycatfish-2.2/kittycatfish.js.php
Parameter kc_ad=%27%2F%2A%2A%2FanD%2F%2A%2A%2F3083%2F%2A%2A%2FbEtWEEN%2F%2A%2A%2F3083%2F%2A%2A%2FanD%2F%2A%2A%2F3083--%2F%2A%2A%2FiGqe&ver=2.0
Таким образом можно отметить, что в данный момент эксплуатируются практически все известные уязвимости, с поправкой на внедрение механизмов защиты при разработке приложений, так и на применяемые защитные средства. Также, это обусловлено большим количеством инструментов для проведения атак на веб-приложения.
В качестве проверки своих навыков по обходу защитных средств веб-приложения мы предлагаем всем желающим возможность проверить свои силы на тестовом стенде (и даже получить вознаграждение, за успешную эксплуатацию вектора атаки).
Метки: author LukaSafonov информационная безопасность блог компании pentestit penetration testing |
Колибри для Фантома |
st->eax = dummy++; // TODO n of context switches
— возрастает, и ладно. Где возможно, конечно, информация выдаётся реальная.
Метки: author dzavalishin системное программирование операционные системы колибри колибриос фантом фантом ос фантомос |
[Из песочницы] CRM уже не спасет: что делать, когда бизнес перерос «коробку» |
Ниже разберемся с тем — что делать если «коробки» недостаточно, и как автоматизировать более сложные бизнес-процессы, чем редактирование карточки клиента.
Итак, в целом понятно, что основной недостаток закрытых CRM — это невозможность адаптировать ее конкретно под ваш бизнес. Даже если на начальном этапе ваши задачи полностью решались в такой системе — с ростом предприятия возникнут проблемы: п1, п2 и п3
Ниже рассмотрим несколько известных вендоров:
Salesforce — довольно дорогая система; если вы примите решение о её внедрении, стоит просчитать затраты на доработку или заработную плату штатного программиста. Однако, это не единственное решение: есть российские варианты, которые более адаптированы к нашей отчётности и интеграциям с учетными системами.
Terrasoft — одна из самых дорогих российских CRM-систем. К тому же, платформа доступна лишь тем, кто уже приобрёл лицензии. Однако преимущество Terrasoft — в удобстве использования платформы.
Все это — лишь одни из самых популярных вендоров. При тщательном подходе к выбору можно найти для себя самый подходящий вариант.
6. И самое главное — обучение сотрудников: непосредственное внедрение. При возможности, договоритесь о проведении обучения с разработчиками, потому что это почти самый главный элемент всего проекта. От того, насколько быстро сотрудники будут ориентироваться в новых условиях — зависит то, каким будет конечный результат.
Если вы будете заранее понимать, что затраты на этапе внедрения обязательно будут, если вы будете готовы к необходимости выделять время и силы на внедрение CRM-системы, если подготовитесь к возможным накладкам, то все эти затраты можно будет минимизировать, а сам процесс сделать максимально простым и безболезненным.
Метки: author vei_cw erp- системы crm- crm open source crm sdk crm доработка асу кис на коленке |
[Перевод] Выпуск Rust 1.19 |
Команда Rust рада представить выпуск Rust 1.19. Rust — это системный язык программирования, нацеленный на скорость, безопасность и параллельное выполнение кода.
Если у вас установлена предыдущая версия Rust, для обновления достаточно выполнить:
$ rustup update stable
Если же Rust еще не установлен, вы можете установить rustup
с соответствующей страницы нашего веб-сайта и ознакомится с подробными примечаниями к выпуску Rust 1.19 на GitHub.
В Rust 1.19.0 вошли некоторые долгожданные функции, но для начала, замечание для пользователей Windows. На этой ОС Rust использует для сборки link.exe
, который входит в состав "Microsoft Visual C++ Build Tools". В последнем выпуске Visual Studio 2017 структура директорий для этих инструментов изменилась. Из-за этого вы были вынуждены использовать инструменты версии 2015 или изменять переменные среды (например, запуская vcvars.bat
). В Rust 1.19.0, rustc
знает, как найти инструменты версии 2017, поэтому вам не потребуется более использовать обходные пути.
А теперь к новым возможностям! Rust 1.19.0 — это первый выпуск, поддерживающий union
(Объединения
):
union MyUnion {
f1: u32,
f2: f32,
}
Объединения похожи на enum
(Перечисления
), но они не имеют "меток" в отличие от последних. "Метка" в enum
позволяет узнать во время исполнения, какой вариант из перечисленных хранится в переменной.
Так как мы можем неверно интерпретировать данные, хранящиеся в объединении, и Rust не может проверить это за нас, чтение и запись полей объединений небезопасны:
let u = MyUnion { f1: 1 };
unsafe { u.f1 = 5 };
let value = unsafe { u.f1 };
Сравнение с образцом (Pattern matching) также работает:
fn f(u: MyUnion) {
unsafe {
match u {
MyUnion { f1: 10 } => { println!("десять"); }
MyUnion { f2 } => { println!("{}", f2); }
}
}
}
Когда объединения полезны? Главная сфера применения — взаимодействие с C. C API могут (и часто делают это) предоставлять объединения, так что написание оберток для API значительно упрощается. Также, из данного RFC:
Встроенная в языке поддержка объединений так же позволит упростить реализацию эффективных с точки зрения использования памяти или кэша структур, основанных на представлении значений, как, например, объединения размером машинного слова, используя младшие биты выровненных указателей.
Эту возможность ожидали с давних пор, и есть еще множество вещей, которые стоит улучшить. На данный момент, объединения могу включать только типы, реализующие Copy
, и не могут реализовывать Drop
. Мы надеемся убрать эти ограничения в будущем.
К слову, а вы когда-нибудь интересовались, как новые возможности добавляются в Rust? Объединения были предложены Josh Triplett, и он выступил на RustConf 2016, рассказав про процесс интеграции. Вы должны на это взглянуть!
К другим новостям, loop
теперь могут возвращать значения через break
:
// старый код
let x;
loop {
x = 7;
break;
}
// новый код
let x = loop { break 7; };
Rust традиционно позиционировал себя как "язык, ориентированный на выражения (expression)", большинство синтаксических конструкций возвращают значения, а не являются операторами (statement). loop
несколько выделялся из этого ряда, не возвращая значение.
Что насчет остальных циклов? Еще не ясно, смотрите обсуждение в этом RFC.
Небольшое улучшение: замыкания, не захватывающие окружение, теперь могут быть приведены к указателю на функцию:
let f: fn(i32) -> i32 = |x| x + 1;
Теперь мы предоставляем архивы запакованные xz
и используем их по умолчанию, что позволяет ускорить передачу данных. Сжатие с gzip
все еще доступно, на случай если вы не можете использовать xz
по какой-либо причине.
Компилятор теперь может запускаться на Android. Мы долгое время всячески поддерживали разработку на Android и наша поддержка продолжает улучшаться.
В заключение, о совместимости. Ранее, когда мы двигались к Rust 1.0, мы проделали большую работу, чтобы убедиться в том, что все отмечено как "стабильное" и "не стабильное". Однако мы просмотрели одну вещь: -Z
флаги. -Z
флаг компилятора включает нестабильные флаги. В отличие от всего остального, вы можете использовать -Z
со стабильным Rust. В апреле 2016, в Rust 1.8, мы добавили предупреждение при использовании -Z
со стабильной и бета версиями Rust. Более чем год спустя, мы починили эту дыру в нашей истории стабильности, запретив -Z
везде, кроме ночных сборок компилятора.
Смотрите детальные заметки к выпуску для подробностей.
Крупнейшие изменения в стандартной библиотеке — макросы eprint!
и eprintln!
. Они работают точно так же, как print!
и println!
, но пишут в стандартный вывод ошибок, а не в стандартный вывод.
Другие изменения:
String
теперь реализует FromIterator>
иExtend>
Vec
теперь реализует From<&mut [T]>
Box<[u8]>
теперь реализует From>
SplitWhitespace
теперь реализует Clone
[u8]::reverse
теперь в 5 раз быстрее и [u16]::reverse
теперь в 1.5 раза быстрееИ некоторые стабилизированные API:
Смотрите детальные заметки к выпуску для подробностей.
В этом выпуске в Cargo были добавлены небольшие, но важные улучшения. Крупнейшее из них: Cargo теперь работает непосредственно с git-объектами. Это уменьшает размер реестра и ускоряет клонирование, особенно на Windows.
Другие улучшения:
Скрипты сборки теперь могут добавлять переменные окружения в окружение
компилируемого контейнера (crate).
Например: println!("cargo:rustc-env=FOO=bar");
Добавлен флаг --all
для подкоманды cargo bench
, чтобы запускать тестыДобавлена опция --exclude
для исключения некоторых контейнеров при использовании--all
.Опция --features
теперь принимает несколько значений, разделенных запятой илиСмотрите детальные заметки к выпуску для подробностей.
Множество людей участвовало в разработке Rust 1.19. Мы не смогли бы этого добиться без участия каждого из вас. Спасибо!
От переводчика
Благодарю ozkriff и gordon-f за помощь в переводе
Метки: author vitvakatu программирование rust выпуск релиз новость |