All streams
Search
Write a publication
Pull to refresh
67
0.5
Михаил @michael_v89

Программист

Send message
> после начала рассылки отчетов среднее время присутствия сотрудника на рабочем месте повысилось.
Немного непонятно, а это как? Сначала работали с 9 до 18, а стали с 9 до 19?
Я тоже как-то задумался, почему в жизни счет ведется с единицы, а в компьютерах с 0. И в чем различие. Получились такие мысли.

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


И тут возникает такой вопрос — включать концы вектора или нет в отрезок, соответствующий числу 1? Есть 4 варианта — включать оба, включать правый, включать левый, не включать.


В первом точка между векторами принадлежит им обоим, в четвертом образуются промежутки. Эти варианты отбрасываем.
Третий вариант соответствует обычному счету предметов — чтобы с уверенность сказать, что овечка перепрыгнула через забор, надо чтобы она полностью была по эту сторону забора, а если хвост у нее еще по ту сторону, то так сказать нельзя. Перепрыгнула полностью — плюс один. Ноль в этом варианте не принадлежит ни одному вектору. Думаю, это одна из причин, почему он появился позже остальных цифр. Ну типа — мы всех овечек посчитали, каждой овечке соответсвует палочка, какой еще ноль?
Второй вариант соответствует адресации, которая используется в компьютерах. Допустим, у нас есть массив четырехбайтовых целых чисел. Элементы массива состоят из байтов, байты из битов. На любом уровне удобнее отсчитывать элементы в порядке возрастания. Для получения начального элемента массива надо взять байты со смещением [0, 1, 2, 3]. Аналог обычного счета был бы такой — прибавить к адресу массива размер элемента 4 байта, байты со смещением [-1, -2, -3, -4] это начальный элемент. Опять же big/little endian здесь можно вспомнить.
Тем не менее, проще не менять исходники и посмотреть в отладчике. Речь была не только про Java, а про языки в целом.
Я правильно понимаю, что у variable в этом случае вызывается что-то типа toString(), который мы сами должны реализовать? Я имел в виду не невозможность логирования в принципе и не определение типа переменной, а сложность получить все поля с их типами и значениями для некоторой сложной структуры.
Полагаю, что не в последнюю очередь это связано с тем, что в таких языках посмотреть, что представляет из себя переменная, можно только в отладчике. В динамических для этого есть всякие var_dump() и console.log(). С другой стороны, я часто использую отладчик в PHP, он хорошо помогает разобраться в работе плохо написанного кода или в дебрях абстракций и DI-контейнеров.
Если вам это интересно, мне меньше 30, лишнего веса не было, скорее наоборот. Но я говорил не об этом. Я указал на несостоятельность ваших доводов, а не на то, что сидячий образ жизни это хорошо. А вы почему-то подменяете понятия.
Сказка учит другому — сиди за компом и похудеешь чудесным образом
В сказке сказано довольно ясно: «и так увлекся, что все время забывал поесть, и очень сильно похудел пока писал». Если мало есть, то можно похудеть. Что здесь чудесного?

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

За компом чел. будет жрать и жрать
Если некто жрет и жрет за компом, это личные проблемы этого «некта». Он будет часто есть и без компа. Не нужно проецировать 1 или 2 известных вам случая на всех людей.

Это реальность, а не то что вам хотелось бы
У меня, например, бывает так. Утром чего-нибудь перекусить, потом начать работать, потом «блин, че оно не работает, надо разобраться», потом «тут немножко доделать осталось», потом «ой блин, уже 4 часа, а я еще не обедал». Это реальность. А приводить в качестве реальности слова профессора, про критику которого даже в Википедии написано, это несерьезно.
Как мне кажется, в целом выглядит получше, чем форматы, описанные в других аналогичных статьях на хабре. Возможно, кому-то и пригодится.
Навскидку вопросы такие:
Если надо сохранить в поле весь текст этой статьи с комментариями, какой разделитель выбрать? Получается, нужен какой-то редактор, который будет назначать разделители или хотя бы просто проверять валидность разметки.
Если надо в одном поле сохранить завершающий перевод строки, а в другом нет, какая у них должна быть разметка?
Раз поднялась такая тема, тоже расскажу свою историю. На диплом делал эмулятор процессора, по документации IA32. Цель была сделать простую виртуальную машину, но при этом оставить полный доступ к оборудованию с возможностью эмулировать отдельные устройства типа CD-ROM. В основном, для ситуаций вида «скинул образ ОС на флешку, подключил виртуальный CD-ROM, поставил ОС на комп». Сначала думал — подумаешь, несколько сотен мелких команд процессора эмулировать, за год управлюсь. Я явно переоценил свои возможности, оказалось, что придумали много всяких умных штук типа DMA и GDT. Поэтому для демонстрации пришлось также написать маленькую ОС в которой использовались только простые команды, но был графический режим, драйвер клавиатуры и браузер содержимого CD. Зато 16-разрядные команды и прерывания эмулировались полностью, и можно было сделать виртуальную дискету из образа.

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

Enter главное не нажать не в той вкладке. Видел случай, как один программист так главную базу грохнул, хотел свежий дамп на локальной машине залить.
Как-то быстро у вас заключение появилось, еще даже не началось ничего…
однако на это потратил довольно много времени
На приложение уровня «Hello world»? Вы правда считаете, что стоит всем об этом рассказывать?
Речь не о бюрократии, а об организации процесса постановки задач. Можно полчаса обсуждать задачу с начальником/заказчиком в то время, когда удобно им, а можно за 2 минуты прочитать общую постановку задачи в таск-трекере, потратить 2 минуты на написание коммента с уточняющими вопросами, и через час потратить еще 2 минуты на чтение ответа. В остальное время можно заниматься другой работой или пинать балду своими делами (в зависимости от ситуации).
Мне кажется, вы просто переносите свой негативный опыт в конкретной ситуации на все методологии организации процесса разработки.
На этапе «уже давно вышла вторая версия», которая использует класс Html.
Класс для генерации html подходит для внутреннего использования (например, в другом классе для работы с формами), но для верстки страниц лучше использовать обычные теги с кодом на php или шаблонизатором.
— меньше строк
— разная подсветка для html и php кода
— подсветка открывающего и закрывающего тега
— возможность свернуть содержимое тега
Сделаю картинкой, чтобы было видно все сразу:
Скрытый текст
image
(не ради разжигания холивара, просто личные наблюдения)

Заметил, что даже в проектах, где принят стиль с египетскими скобками, иногда для улучшения читабельности все равно ставят после if или for пустую строку.
yii2, jquery, doctrine, less.js

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

Здесь все красиво и компактно
laravel
public function dispatch($command, Closure $afterResolving = null)
{
    if ($this->queueResolver && $this->commandShouldBeQueued($command)) {
        return $this->dispatchToQueue($command);
    } else {
        return $this->dispatchNow($command, $afterResolving);
    }
}


А здесь первые три строчки тела визуально сливаются с foreach
phpspec
private function generateArgumentsDifferenceText(array $actualArguments, array $expectedArguments)
{
    $text = '';
    foreach($actualArguments as $i => $actualArgument) {
        $expectedArgument = $expectedArguments[$i];
        $actualArgument = is_null($actualArgument) ? 'null' : $actualArgument;
        $expectedArgument = is_null($expectedArgument) ? 'null' : $expectedArgument;

        $text .= $this->differ->compare($expectedArgument, $actualArgument);
    }

    return $text;
}


Я воспринимаю скобки "{}" не только как начало/конец блока, но и как сигнал увеличение/уменьшение отступа, поэтому мне удобнее, когда открывающая скобка находится на отдельной строке. Однако другие стили особого раздражения не вызывают, без проблем пишу так, как принято в проекте.
Спасибо, конечно, за повторение ссылки из фразы «написал специалист по информационной безопасности Асаф Орпани в своем блоге», но если бы я хотел почитать в оригинале, то я бы так и поискал по словам «Joomla SQL Injection Vulnerability» (если что, это на данный момент первый результат в поиске Google). Мне непонятна цель самой статьи на Хабре. Это ведь даже не перевод статьи по указанной ссылке.
И ни слова про принцип работы самой уязвимости. Зачем вы написали эту статью?
Так можно и одним типом string обойтись. И передавать через JSON не только невалидный JSON, но и код в любом другом формате или на языке программирования. Надо будет просто функцию восстановления написать.
{
    value: "................................................"
}

Information

Rating
1,975-th
Location
Россия
Registered
Activity