Александр Семёнов. "Двенадцать агентов Ябеды-Корябеды". Часть II

15:43 Рубрика: Всячина

12agentov02

Александр Семёнов. "Двенадцать агентов Ябеды-Корябеды". Часть I

15:42 Рубрика: Всячина

12agentov01

Файловый менеджер на PHP, с правами, контролем версий и AJAX-ом

16:08 Рубрика: Web Development

phpfilemanager

 

Особенности файлового менеджера:
— Можно задавать права доступа на файлы и директории. Права двух типов: есть доступ или нет доступа. Файлы хранятся в недоступной для скачивания по прямой ссылке папке. Скачивание файла происходит с предварительной проверкой пользователя и прав доступа на файл. Любой пользователь файлового менеджера может обладать правами администратора, что указывается при добавлении нового или редактировании существующего пользователя. Администратор может видеть все, в том числе «удалённые» файлы.
— Контроль версий каждого файла. После загрузки файла он сохраняется с именем, которое не позволяет перезаписать существующие файлы, а его «оригинальное» имя сохраняется в БД. Данный подход разрешает хранить разные состояния файлов.
— Автоматическое создание превью загружаемых изображений.
— Файл в менеджере можно сделать доступным для скачивания
— GPL, код доступен на github

 

Далее

Психологическая деформация программистов. Взгляд с обеих сторон баррикад

16:06 Рубрика: Всячина

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

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


Сразу стоит заметить, что программист много времени проводит за компьютером, следовательно, многие из перечисленных пунктов относятся не только конкретно к программистам, а и к «компьютерщикам» в целом.

Гиперконцентрация


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

В реальной жизни это также может вызывать свои эффекты, как например бытовые дела тоже по привычке начинают производиться в режиме гиперконцентрации. Например, во время уборки в квартире программист не будет параллельно думать о миллионе дел или безудержно болтать по телефону. Скорее он погрузится в какую-то свою задачу (может и в саму уборку) и просто будет заниматься процессом. Не стоит от программиста «требовать внешнего внимания», когда он прогружен в код или какую-то задачу.

Погруженность во внутренние образы и конструкции


Работа программиста имеет свою специфику, которая в аналогичном виде более всего присуща профессии инженера-изобретателя. Если вы знакомы с трудами Никола Тесла, то сможете вспомнить как он описывал то, что происходит в его голове. Если вкратце, то в голове Тесла мог построить механизм, запустить его и даже «прокрутить во времени» его работу, чтобы понять какие детали будут изнашиваться и где могут возникнуть проблемы в будущем. Не менее сложные конструкции возникают и в процессе профессиональной работы программиста. Данный эффект называется образно-чувственным конструированием. Если обыватель видит на экране только наборы символов, то в голове программиста этот код превращается в целые части мира. Как чтение книги создает образы и переживания в человеке, так и код способен такое же делать с программистом. Именно поэтому программисты «чувствуют» код, знают когда он «красив», когда «грязен», будет ли он работать и т.д. С какой-то стороны хороший программист сравним с писателем художественных произведений.

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

Низкий уровень социального взаимодействия и его разнообразия в повседневной работе


Данный момент не является «де факто», однако всё же периодически встречается и может играть свою определенную роль в деформации психики. Так как большую часть рабочего времени программист проводит в мире кода, и единственными «собеседниками» в нем являются «методы, функции, объекты, модули, пакеты и т.п.», соответственно и уровень социального взаимодействия у программистов, как правило, ниже, чем в большинстве профессий. Это связано еще не столько с тем, сколько людей вовлечено в работу, сколько с тем, думает ли о других людях в данный момент сам человек. Если работу дворника сложно назвать «активно социальной», тем не менее, сам дворник может в этот момент размышлять о жене, детях, друзьях и т.п. А для программиста же такая возможность отсутствует, он должен быть погружен в код. И хотя часто имеется рабочий коллектив, но коллектив, как правило, таких же программистов. Программистам иногда сложно работать рядом с людьми других профессий. Так что если степень деформации в коллективе высока, то это лишь усугубляет данный фактор (социального разнообразия отношений).

Обостренное восприятие причинно-следственных связей


Любой код должен работать, но чтобы написать работающий код, нужно понимать структуру причинно-следственных связей этого кода. Проще говоря «что, почему и как происходит», а также «что произойдет, если что-то не произойдет как ожидалось». Всё это накладывает свой отпечаток и на мышление человека. Данный способ мышления еще принято называть «техническим складом ума», когда человек старается найти всему рациональное объяснение и понять причинно-следственную связь. Отдельные программисты помимо написания кода часто втягиваются в технические аспекты, как например разработка аппаратуры под свои нужды (привет «паяльникам»). Порой это может доходить до уникальных надстроек в психике. Например, когда сложная застежка бюстгальтера девушки вызывает столько же интереса, как и то, что этот бюстгальтер скрывает.

Со стороны это часто может восприниматься как «замороченность над мелочами». То что не вызывает интереса для большинства людей, в программисте может порождать огромные потоки размышлений. Соответственно, так как не пропорциональны объемы приложения умственных усилий, то выводы, которые делает программист об эффектах реального мира, порой могут казаться «чудаковатыми» и восприниматься с определенным удивлением. Но что удивительно, если вы спросите программиста почему он так решил, то, скорее всего, получите целую цепочку причинно-следственных связей, и почти всегда вполне разумных. В целом такое происходит в голове каждого человека, однако именно у программистов этот момент часто обострен и порой он способен привлекать для анализа те аналогии, которые не пришли бы в голову обычному человеку.

Привыкание к формализованной постановке задач


Так как программист должен создавать код, который должен работать ровно так, как это требуется для задачи, то привычка делать то, что было сказано, постепенно перетекает и в другие области жизни. Но так как в большинстве случаев социального взаимодействия имеет место невербальное восприятие, «угадывание» и «додумывание», то у программистов обостряется чувство конкретизации.

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

Жертвы «инженерного-гламура»


Рискую быть «съеденным заживо», но данный момент требует всё же освещения в рамках этой статьи. Речь пойдет не столько о программистах, сколько о «компьютерщиках». Гламур является нормальным и естественным порождением человеческих потребностей, вкратце девизом гламура можно назвать «Кто круче», соответственно для реальной жизни это «тачки, шмотки, бабло и т.п.». В сфере «инженерного-гламура» действует тот же принцип «Кто круче», однако с иными критериями. Так как основная концентрация «компьютерщика» направлена не на других людей, как в «гламуре реального мира», а на собственный внутренний мир образов и причинно-следственных связей, соответственно и цели здесь преследуются из области этого мира. Последний навороченный по характеристикам смартфон; мощный комп/сервак/ноут чтобы всё бегало еще быстрее; свежие программы, которые делают вбивание автокомплита на 32 миллисекунды быстрее; новые приложения с более плавной проруткой и модным голосовым распознавателем; знания о тайных особенностях новой версии компилятора и т.п.
Как и в «реальном гламуре», так и в «инженерном» есть свои «иконы», например недавняя статья про модем U.S. Robotics явный тому пример.
Так что не спрашивайте «зачем ему такой же телефон» и не удивляйтесь ответу «он не такой же, тут же на 500 мегагерц сильнее проц».
Интересный момент. В отдельных случаях «инженерный гламур» может быть подавлен обостренным требованием к причинно-следственным связям. То есть новый комп не будет куплен, пока реально не потребуется его мощность.

Заключение


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

С учетом всего описанного не без оснований программистов воспринимают как «космических товарищей», однако по своему субъективному мнению, хочу сказать что если бы не добровольный выбор тех, кто идет в ряды программистов, то им бы стоило давать «молоко за вредность», но в данном случае психологического характера.

Тем не менее, каждый человек сам строит свою жизнь и сам факт психологической деформации «труженников кода» пока не так велик. Большинство имеет семьи, друзей, интересы помимо кода и компьютера. Так что не ведитесь на шаблонное «да он программист». Это не диагноз, это просто стиль мышления )

UPD:
Небольшой бонус от пользователя ikra: жж пост «Не будите программиста».

 

(c)

Далее

Как изменить форму создания/редактирования материала из template.php

10:37 Рубрика: Drupal

Уже писал как изменить форму создания материала из своего модуля, сейчас же покажу как можно сделать тоже самое из template.php:

 

Читать

workflow access не работает

10:36 Рубрика: Drupal

Есть материал material.
При помощи workflow access устанавливаю ограничение доступа на редактирование материала в определенных состояниях. Но материал редактируется не глядя на то, что я это не разрешал.

В настройке разрешений для ролей стоит
create material content ДА
edit own materila contentм ДА

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

Как правильно настроить workflow access? Помнится в пятерке все работало...

 

Читать

Кнопки социальных сетей для Drupal

10:35 Рубрика: Drupal

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

 

Далее

Ошибка MySQL server has gone away query

10:33 Рубрика: Drupal

При регистрация, после отправки своих данных вылезает куча ошибок (практически мгновенно) типа MySQL server has gone away query. Регистрация вроде проходит успешно.
Лог прилагаю
Хостер так прокомментировал:
''чаще всего это значит сервер MySQL по таймауту неактивности прерывает соединение.''
Скорость до сервера действительно хреновая, пакеты теряются пинг 550ms. Но этож не повод согласитесь. Можете прокомметировать?

 

Читать

How do you keep parents of floated elements from collapsing?

10:31 Рубрика: Web Development

Although elements like <div>s normally grow to fit their contents, using the float property can cause a startling problem for CSS newbies: if floated elements have non-floated parent elements, the parent will collapse.

 

More

The Mystery Of The CSS Float Property

10:28 Рубрика: Web Development

istockphoto

 

Years ago, when developers first started to make the transition to HTML layouts without tables, one CSS property that suddenly took on a very important role was the float property. The reason that the float property became so common was that, by default, block-level elements will not line up beside one another in a column-based format. Since columns are necessary in virtually every CSS layout, this property started to get used — and even overused — prolifically.

The CSS float property allows a developer to incorporate table-like columns in an HTML layout without the use of tables. If it were not for the CSS float property, CSS layouts would not be possible except using absolute and relative positioning — which would be messy and would make the layout unmaintainable.

In this article, we’ll discuss exactly what the float property is and how it affects elements in particular contexts. We’ll also take a look at some of the differences that can occur in connection with this property in the most commonly-used browsers. Finally, we’ll showcase a few practical uses for the CSS float property. This should provide a well-rounded and thorough discussion of this property and its impact on CSS development.

 

More