Pull to refresh
64
0.4
Михаил@michael_v89

Программист

Send message
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: "................................................"
}
Небольшой охранный бронежилет) 3 класс защиты подойдет (не под пули же лезть). Или как вариант, пара кирпичей в рюкзаке, зимой под курткой почти не заметно.
«Мы тут решили дать слово чуваку, которого вы не знаете. Но он дело говорит, правда-правда. Потому что про физкультуру же»

Потому что лёгкая физкультура — это не спорт.
Большинству людей не нужно заниматься спортом
Хороший совет. Особенно в сочетании с советом заниматься тяжелой атлетикой.

Попробуйте пройтись до маркерной доски
И вы увидите, что это не то же самое, что открыть приложение с заметками. Какое интересное открытие.

Вам известно о специальных столах для работы стоя? Мое мнение: это изумительно!
Вот и работайте стоя, другим-то зачем советовать. 2 часа на тумбочке дневального то еще удовольствие. Ах да, вы же уже полгода так работаете. Правда, сами же говорите, что потом ноги начинают болеть.

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

Из-за отсутствия полного комфорта вы буквально вынуждены искать быстрые пути решения проблемы
То есть быдлокодить.

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

(извиняюсь за возможную резкость в высказываниях, просто такие мысли возникают после статьи)

По теме добавил бы следующее. Самый оптимальный выбор — это бег. 10-20 минут бега через день неплохо компенсируют нагрузку на глаза и голову. А лично мне нравится бег с утяжелением. Лишние 6-7 кг позволяют вместо 2 кругов пробежать 1, время меньше, а мышцы нагружаются почти так же.
Я в общем-то так и подумал. Просто, на мой взгляд со стороны, мне не очень понятно, чем такое «программирование под Windows» отличается от программирования под любую другую ОС, для которой есть браузер.
Ок, мне стало интересно, и я решил вернуться к тому, с чего все началось — к определению длины числа. Способ с делением во всех случаях медленнее умножения. Число 12345678, 20 млн. раз.

Debug, оптимизация отключена
a * b: 00:00:00.6641369
a / b: 00:00:02.0418462
empty: 00:00:00.0883897


Debug, оптимизация включена
a * b: 00:00:00.2367661
a / b: 00:00:01.5960753
empty: 00:00:00.0660346


Release, оптимизация отключена
a * b: 00:00:00.2784811
a / b: 00:00:01.8224548
empty: 00:00:00.0714300


Release, оптимизация включена
a * b: 00:00:00.2012901
a / b: 00:00:01.5951311
empty: 00:00:00.0554228

Скрытый текст
namespace test
{
    class Program
    {
        static uint getCount_Mul(uint x)
        {
            uint p = 10;
            uint count = 1;
            while (x >= p)
            {
                count++;
                p *= 10;
            }
            return count;
        }

        static uint getCount_Div(uint number)
        {
            uint count = (number == 0) ? (uint)1 : (uint)0;
            while (number > 0)
            {
                count++;
                number /= 10;
            }
            return count;
        }

        static void Main(string[] args)
        {
            uint a = 12345678;
            uint loopCount = 20000000;
            uint res = 0;

            Stopwatch sw;
            TimeSpan elapsed;



            Thread.Sleep(100);
            sw = new Stopwatch();
            sw.Start();

            for (int i = 0; i < loopCount; i++)
            {
                res += getCount_Mul(a);
            }

            sw.Stop();
            elapsed = sw.Elapsed;

            Console.WriteLine("a * b: " + elapsed.ToString());



            Thread.Sleep(100);
            sw = new Stopwatch();
            sw.Start();

            for (int i = 0; i < loopCount; i++)
            {
                res += getCount_Div(a);
            }

            sw.Stop();
            elapsed = sw.Elapsed;

            Console.WriteLine("a / b: " + elapsed.ToString());



            Thread.Sleep(100);
            sw = new Stopwatch();
            sw.Start();

            for (int i = 0; i < loopCount; i++)
            { }

            sw.Stop();
            elapsed = sw.Elapsed;

            Console.WriteLine("empty: " + elapsed.ToString());


            Console.WriteLine("res:   " + res);
        }
    }
}

На 100 млн. раз разница более 1 секунды (C#, 3.00 ГГц). Для разовых действий роли не играет, но в движке базы данных или в обсчете статистики будет заметно.

// int a = 12345678, b = 10;
// int count = 100000000;

a / b: 00:00:01.7970217
a * b: 00:00:00.3328430
empty: 00:00:00.2414149

Скрытый текст
namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 12345678, b = 10;
            int count = 100000000;

            Stopwatch sw;
            TimeSpan elapsed;



            sw = new Stopwatch();
            sw.Start();

            for (int i = 0; i < count; i++)
            {
                int x = a / b;
            }

            sw.Stop();
            elapsed = sw.Elapsed;

            Console.WriteLine(elapsed.ToString());



            sw = new Stopwatch();
            sw.Start();

            for (int i = 0; i < count; i++)
            {
                int x = a * b;
            }

            sw.Stop();
            elapsed = sw.Elapsed;

            Console.WriteLine(elapsed.ToString());



            sw = new Stopwatch();
            sw.Start();

            for (int i = 0; i < count; i++)
            {}

            sw.Stop();
            elapsed = sw.Elapsed;

            Console.WriteLine(elapsed.ToString());
        }
    }
}

Извиняюсь за нубский вопрос, а то, что в default.js — оно потом компилируется в машинный код или выполняется в каком-то интерпретаторе?
Ну я же не о том, что спрашивают что-то наизусть, и не говорю, что основы знать не надо. Я о том, что в стажеры сисадминов идут практически с любым околокомпьютерным образованием — программирование, защита информации, асутп, телеком. У всех основы разные, не везде сети даются в хорошем объеме, не везде есть хорошие преподаватели. А разобраться с основами на реальных задачах можно за пару дней. Или как ниже пишут, можно БД проектировать и не знать, что это называется 3 нормальная форма. А это ведь тоже основы.

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

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

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

Я согласен с автором, что есть много людей, которые хотят много получать и нифига не делать. Я согласен с вами, когда речь идет про специалистов с опытом. Но сейчас речь идет о поиске начинающих специалистов. В вузе не могут дать всего что нужно, так что специалист в любом случае будет чему-то обучаться на рабочем месте. Почему за обучение тем же технологиям Cisco вы готовы платить, а за что-то другое нет? После обучения сертифицированный специалист тоже может от вас уйти. Или вы считаете, что за это работодатель тоже не должен платить?
Вы искренне считаете, что работодатель должен БЕСПЛАТНО, и платя ему ЗАРПЛАТУ обучать себе работника с ВЫСШИМ образованием базовым вещам?
В статье написано, что планировалось внутрикорпоративное обучение. Добавить пару занятий в данном случае не так сложно.

Зачем вы ходили в вуз и платили по 150 тысяч за год?
В вузе мне рассказывали про протокол TCP/IP и про сокеты, но не рассказывали, чем отличается маршрутизатор от коммутатора.

заплатить 150 тысяч рублей за 3х месячный курс основ
За то, чтобы я сам погуглил, чем они отличаются? Все подобные вопросы вполне можно изучить по ходу дела, даже отдельных курсов не надо.

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

Если человек не знает что такое MAC, а что IP что он может решить?
Он может это узнать, и потом решить. Было бы желание. А с вашей логикой он и в вузе бы ничего не решил. Он ведь многого не знал, когда поступал.
Согласен, но я немного не о том. Вопрос про отличие маршрутизаторов и коммутаторов я впервые услышал на собеседовании на должность помощника системного администратора. То есть до собеседования я об этом не знал. Хотя, например, примерно представлял, как работает протокол TCP/IP. Потом я посмотрел ответ в интернете, и на другом собеседовании ответил, но мне задали другой аналогичный вопрос. На него я тоже потом поискал ответ. Но во всех таких вопросах можно разобраться за пару дней испытательного срока, было бы желание, А желание проверять никто не хочет.

Information

Rating
2,220-th
Location
Россия
Registered
Activity