Был у меня случай, не такой эпичный, но все же: дали мне задание — что-то по части интерфейса добавить в приложение навигационных карт, портированное с тойотовских навигаторов на iOS. Сделал и забыл. Через три-четыре месяца в декабре (это важно) ко мне прибегает недовольный менеджер и говорит, мол, я своими изменениями тогда сломал навигацию: позиционирование с GPS не работает. Открываю проект, начинаю дебажить. Вижу такой написанный задолго до меня код: в метке времени, получаемой с GPS-координатами, зачем-то число месяца увеличивалось на единицу. Эта метка по сути использовалась только для логирования, и кому-то не нравилось видеть в строке лога нулевой месяц в случае января, или что-то вроде того. Только вот тот, кто решил инкрементить его, не учел, что это самое инкрементированное число также скармливалось какой-то юниксовой функции для формирования даты, и, как вы могли догадаться, всё работало без сбоев ровно до тех пор, пока не случился декабрь на дворе, и как результат — все данные с координатами в декабре отвергались как невалидные. Ну а меня привлекли как того, кто последний коммитил, ибо до меня «все работало нормально».
таким образом, если не передавать аргументов, то в качестве propertyName будет подставлено имя вызывающей функции или имя свойства. Подробности тут. Кстати, еще есть полезное ключевое слово nameof():
RaisePropertyChanged(nameof(Now));
Полезная штука, спасает от проблем при переименованиях. Без неё пришлось бы хардкодить имя свойства в виде строки.
Такие параметры лучше передавать аргументами метода
Вообще, идея интересная. Но ИМХО не для джавы и прочих ЯП, которые выбирают с учетом скорости разработки. Это что-то вроде const-correctness в c++, где вы можете помечать метод как const, гарантируя, что этот метод не может изменять поля своего объекта. Вот тут как раз люди с подобным осознанно заморачиваются (и все бы так делали). Только вот в плюсах это контракт типа «всё или ничего» — отдельные поля для указания выбрать нельзя. Ну есть еще mutable-поля, что по сути дает возможность их менять даже в конст-методах, но опять же, во всех. Если передавать все нужно аргументами метода — тут вылезут другие недостатки, вроде лишнего копирования тонны аргументов на каждый вызов и прочее, что тоже, согласитесь, не лучший вариант. Проскользнула мысль — разрешать для изменения указанные поля через синтаксис типа аттрибутов в C#, но многословность тоже никуда не исчезнет… Вообще, лично я бы смирился с тем, что в классе его поля — это как единая контролируемая неделимая сущность, и разрешить их изменять без договоренности «по одному» — нет большой выгоды. Но вот насчет статических полей и всяких глобальных переменных (если таковые имеют место быть в том или ином ЯП) — для их изменения как раз не помешало бы вводить те самые разрешения «по одному», ибо сайд-эффекты как раз имхо чаще завязаны на них (всякие errno и прочие). Плюс такого подхода — количество «разрешений» будет гораздо меньше, чем в первом варианте, а так же будет возникать ситуация, когда функции, изменяющие глобальные переменные, помимо своих собственных «разрешений» тащат за собой все разрешения всех вызываемых функций с сайд-эффектами. То есть, мы наглядно будем видеть, что там подкапотно ворочают в недрах вызовов. И да, этот список будет разрастаться, что будет являться показателем «я явно трогаю слишком много всего, надо что-то рефакторить», приводящее к будущим советам от новых гуру типа «не более пары разрешений на функцию» или «список разрешений должен помещаться в один экран» :)
Как-то так.
UPD: Оказывается, если выбрать «все комментарии» через верхний чекбокс и нажать «пометить как прочитанное», то «единичка» из-за невидимого поста исчезнет… Чёрт возьми, а ведь и мог бы раньше догадаться попробовать…
Не могу держать активно открытой мобильную версию страниц хабра более 15 минут (насчет страницы с постом не уверен, но комментарии — точно) на телефоне, начинает быстро садиться батарея и сильно нагревается телефон (Samsung Galaxy Note 6 Edge)
Как избавиться от залипшего «колокольчика» с цифрой «1»? У меня нет непрочитанных комментариев. Не то, чтобы это было прям так важно, но глаз цепляется.
Как-то на моём 8-летнем ноутбуке отказался кнопка «Z». «Undo» приходится делать через меню. Но вот при печати как раз спасало наличие цифрового блока с вводом через Alt.
Немного не по теме, но также предлагаю обратить внимание на японские клавиатуры. Там вместо длинной кнопки пробела умещаются целых четыре. А знаки препинания жестоко перетасованы. Если пользоваться только японской и английской раскладкой (которая идет вместе с японской, а не отдельная), то жить можно. Но когда садишься за обычную клавиатуру, начинаются конфликты привычек…
Полагаю, в том же направлении думали те самые дизайнеры, что решили «а что это, мол, место между стрелками и Delete пустует? Давайте зафигачим туда таких полезных кнопок как Power/Sleep/Reset!». В аду наверняка для тех дизайнеров есть специальный котёл. А так же для тех, кто додумался массово закупать такие клавиатуры в университет. За пять лет хоть раз да палец соскользнет во время лабораторной…
Тоже как-то купил сюрфейс, думал, буду кодить на нём в пути или где-нибудь вне дома. Однако быстро понял, что, в отличие от ноутбука, его не поставишь на колени: это чертовски неудобно (надо сидеть чуть ли не в позе эмбриона), да и еще можно неловким движением захлопнуть подставку и прищемить что-нибудь. С тех пор он у меня пылился на полке. Тем не менее, как-то решил попробовать установить на него Clip Studio (редактор для рисования комиксов, манги и не только) — создалось такое впечатление, будто сам сюрфейс изначально был создан стать крутым графическим планшетом: то чувство, когда софтина различает касание рукой и стилусом, когда двумя пальцами можно вращать холст или облокотить кисть на экран, рисуя стилусом не боясь случайных ложных распознаваний от прикосновения руки к экрану — незабываемо… Тем не менее, рисую я не часто, и чем реже включаю планшет — тем меньше хочется его вообще включать. А всё из-за того, что за то время, что он пылится на полке, накапливается тонна обновлений, которые при каждом включении норовят установиться, а не могут (виснет на каком-то проценте, а дальше хард-ресет и откат, и так каждый раз). Как я понимаю, у тех, кто пользуется им ежедневно — таких проблем не возникает, но для меня это чуть ли не самый большой минус.
Как я понял суть поста вкратце: «программисты, вы же такие умные люди! А раз умные, то это ваш священный долг взять на себя ответственность за действия вашего нанимателя и повлиять на его решения!».
Если проигнорировать тот факт, что ваше негодование направлено немного «не по адресу» и предположить, что вотпрямщас все прочитавшие «одумаются» и «встанут на праведный путь», то, предполагаю, встанет работа немалой части госорганизаций )
Мне вот «повезло» работать в опенспейсе одном помещении с командами, кто ковыряет эмбеддед/железки (с незаклеенными динамиками) и работающих на каких-то страшных специализированных ПК-моноблоках, которые противно пищат на каждое нажатие чего-либо. И самое главное — звуки не отключают и все вокруг при этом молчат! Пришлось долго к этому привыкать… Кстати да, это дело происходит в Японии, тут есть влияние менталитета на такие мелочи: люди руководствуются принципом «не мое дело», «лучше сидеть и не отсвечивать» и «все сидят, молчат и терпят же». И да, еще одно — сидеть в наушниках запрещено.
Года два назад у меня были случаи, что во время обновления Windows на до-загрузочном этапе, где даже еще курсора нет (а клавиатура не реагирует) внезапно запускалось это самое окно Razer Synapse, которое, судя по всему, пока не закроешь — прогресс обновления дальше не сдвинется (а закрыть — никак). Приходилось насильно перезагружаться и удалять Razer Synapse на время обновления…
UPD:
нашел фото в интернете:
На фото присутствует курсор, в моем случае — то ли не было его, то ли клик не проходил — уже не помню
резистор 3.9 кОм может отличаться на 3.9 кОм в ту или иную сторону
<sarcasm>
А ничего так сверхпроводящий «резистор» 3.9 кОм с погрешностью -3.9 кОм = 0 Ом мог получиться. Возможно, кто-то случайно держал в руках ключ к технологическому будущему да впаял его в какой-нибудь телевизор…
</sarcasm>
Позвольте дополнить от себя.
Я на хабре пишу сообщения очень редко, и не совсем понимал, кто прав а кто виноват в этих спорах о системе кармы на хабре. Однако, сам столкнулся с такой проблемой, но уже на тех самых «других сайтах Рунета»: предположим, вам понравился некий сайт, куда выкладывают различные переведенные книги, и вы решили в раздел «отзывы» оставить развернутое мнение. Однако, как раз из-за отсутствия на сайте подобной системы саморегуляции сообщества, которое поддерживает культурный уровень — раздел отзывов оказывается превращен в уютный чатик местных авторитетов, а также полнится «отзывами» в стиле «клева, мне панравилось», "+", «хачу ещо». Таким образом, для людей, кто по отзывам пытается понять, стоит ли начинать читать или нет — полезная информация просто тонет в этом флуде. Вроде бы место для отзывов подходящее, да вот твое развернутое мнение там — не нужно, «слишкам многа букв». Поэтому, для себя я сделал вывод, что не стоит на хабре слушать ноющих на тему «не минусуйте меня, я всего лишь хочу флудить и не бояться за это минусов», ибо люди не понимают, насколько это вредит ресурсу, особенно популярному (выше популярность -> больше посетителей -> больше бессмысленных комментов, ведь правило 95% соблюдается везде).
Ну, у нас есть начальник, который требует, чтобы не просто к 9:00, а еще минут на 20 раньше, только чтобы демонстрировать показное старание, лояльность и имитировать горящий взгляд. При этом, как ты наверное помнишь, таймер учета рабочего времени начинает капать только с 9 )
UPD: В контракте (по крайней мере, у меня так) прописан флекс, но в конторе, куда нас бодишопят, нанятым со стороны работникам его не предоставляют. На это начальство отвечает типа «ну, не судьба».
А это, кстати, зависит от менталитета. Работая в Японии более 5 лет, заметил, что с японцами-коллегами такой естественной «передачи опыта» не стоит ожидать. У них не принято указывать другим, что «так-то и так-то делать плохо, мол лучше поступить вот так-то». Возможно, это из-за менталитетного «не лезу в чужие проблемы, если сами не попросят». То есть, если ты накосячишь по незнанию в текущей технологии, весьма вероятно, что всё просто примут как есть и будут превозмогать связанные с этим проблемы вместе всей командой, и только потом ты внезапно узнаешь об этом от своего начальства, спустя приличное время. Естественно, найдутся те, кто сразу же поправит и предложит вариант решения получше, но это крайне редко (я имею ввиду, что вероятность наткнуться на такого коллегу в японском коллективе значительно меньше, чем, к примеру, в русском коллективе). Также здесь может иметь место тот факт, что ты — единственный европеец в коллективе, но об этом я никогда не узнаю. Конечно, все эти выводы я сделал на основе своего опыта и на абсолютность никак не претендую.
Возможно, я просто придираюсь, но мне не очень нравится результат самой первой итерации дробления пространства: из-за деления «от одной стенки до противоположной — одной прямой линией» сразу бросается в глаза строгая граница, делящая лабиринт пополам, и это свойство алгоритма проявляется в любом варианте генерации. Да, позже добавленные коридоры немного ослабляют эффект, но все же.
У нас также, в школе все домашние задания/контрольные по программированию на турбо паскале сдавали написанием кода на листочке в клеточку. Опечатался — всё, значит имя функции плохо запомнил наизусть, низачот (компьютер был только у 2 человек в классе, проверить было никак). Приморье, 2003 год.
Кстати, на эти стопки проводов хорошо так кучкуется снег во время снегопада (на Хоккайдо снег высыпает прилично) и периодически сваливается на голову при наборе критической массы
А у меня как раз статистика обратная: типичный японец становится в ступор (вроде как английский учил в школе, а опыт общения или знания недостаточно для разговора), а старички наоборот проявляют инициативу пообщаться с гайдзином по-английски, учить иностранный язык для них как хобби на пенсии. Бывало случается так, что ты с дедушкой-японцем говоришь по-японски, а он тебе отвечает по-английски. В общем, всякое бывает )
где RaisePropertyChanged:
таким образом, если не передавать аргументов, то в качестве propertyName будет подставлено имя вызывающей функции или имя свойства. Подробности тут. Кстати, еще есть полезное ключевое слово nameof():
Полезная штука, спасает от проблем при переименованиях. Без неё пришлось бы хардкодить имя свойства в виде строки.
Вообще, идея интересная. Но ИМХО не для джавы и прочих ЯП, которые выбирают с учетом скорости разработки. Это что-то вроде const-correctness в c++, где вы можете помечать метод как const, гарантируя, что этот метод не может изменять поля своего объекта. Вот тут как раз люди с подобным осознанно заморачиваются (и все бы так делали). Только вот в плюсах это контракт типа «всё или ничего» — отдельные поля для указания выбрать нельзя. Ну есть еще mutable-поля, что по сути дает возможность их менять даже в конст-методах, но опять же, во всех. Если передавать все нужно аргументами метода — тут вылезут другие недостатки, вроде лишнего копирования тонны аргументов на каждый вызов и прочее, что тоже, согласитесь, не лучший вариант. Проскользнула мысль — разрешать для изменения указанные поля через синтаксис типа аттрибутов в C#, но многословность тоже никуда не исчезнет… Вообще, лично я бы смирился с тем, что в классе его поля — это как единая контролируемая неделимая сущность, и разрешить их изменять без договоренности «по одному» — нет большой выгоды. Но вот насчет статических полей и всяких глобальных переменных (если таковые имеют место быть в том или ином ЯП) — для их изменения как раз не помешало бы вводить те самые разрешения «по одному», ибо сайд-эффекты как раз имхо чаще завязаны на них (всякие errno и прочие). Плюс такого подхода — количество «разрешений» будет гораздо меньше, чем в первом варианте, а так же будет возникать ситуация, когда функции, изменяющие глобальные переменные, помимо своих собственных «разрешений» тащат за собой все разрешения всех вызываемых функций с сайд-эффектами. То есть, мы наглядно будем видеть, что там подкапотно ворочают в недрах вызовов. И да, этот список будет разрастаться, что будет являться показателем «я явно трогаю слишком много всего, надо что-то рефакторить», приводящее к будущим советам от новых гуру типа «не более пары разрешений на функцию» или «список разрешений должен помещаться в один экран» :)
Как-то так.
Немного не по теме, но также предлагаю обратить внимание на японские клавиатуры. Там вместо длинной кнопки пробела умещаются целых четыре. А знаки препинания жестоко перетасованы. Если пользоваться только японской и английской раскладкой (которая идет вместе с японской, а не отдельная), то жить можно. Но когда садишься за обычную клавиатуру, начинаются конфликты привычек…
Если проигнорировать тот факт, что ваше негодование направлено немного «не по адресу» и предположить, что вотпрямщас все прочитавшие «одумаются» и «встанут на праведный путь», то, предполагаю, встанет работа немалой части госорганизаций )
UPD:
На фото присутствует курсор, в моем случае — то ли не было его, то ли клик не проходил — уже не помню
<sarcasm>
А ничего так сверхпроводящий «резистор» 3.9 кОм с погрешностью -3.9 кОм = 0 Ом мог получиться. Возможно, кто-то случайно держал в руках ключ к технологическому будущему да впаял его в какой-нибудь телевизор…
</sarcasm>
Я на хабре пишу сообщения очень редко, и не совсем понимал, кто прав а кто виноват в этих спорах о системе кармы на хабре. Однако, сам столкнулся с такой проблемой, но уже на тех самых «других сайтах Рунета»: предположим, вам понравился некий сайт, куда выкладывают различные переведенные книги, и вы решили в раздел «отзывы» оставить развернутое мнение. Однако, как раз из-за отсутствия на сайте подобной системы саморегуляции сообщества, которое поддерживает культурный уровень — раздел отзывов оказывается превращен в уютный чатик местных авторитетов, а также полнится «отзывами» в стиле «клева, мне панравилось», "+", «хачу ещо». Таким образом, для людей, кто по отзывам пытается понять, стоит ли начинать читать или нет — полезная информация просто тонет в этом флуде. Вроде бы место для отзывов подходящее, да вот твое развернутое мнение там — не нужно, «слишкам многа букв». Поэтому, для себя я сделал вывод, что не стоит на хабре слушать ноющих на тему «не минусуйте меня, я всего лишь хочу флудить и не бояться за это минусов», ибо люди не понимают, насколько это вредит ресурсу, особенно популярному (выше популярность -> больше посетителей -> больше бессмысленных комментов, ведь правило 95% соблюдается везде).
UPD: В контракте (по крайней мере, у меня так) прописан флекс, но в конторе, куда нас бодишопят, нанятым со стороны работникам его не предоставляют. На это начальство отвечает типа «ну, не судьба».