Pull to refresh
  • by relevance
  • by date
  • by rating

Поменять a и b без c

Lumber room
К слову о интересных решениях.
Помнится когда-то давно я был неучем и не догадался как, не используя при этом третью переменную, сделать чтобы a получило значение b, а b — значение a.
a=a+b
b=a-b
a=a-b
А вы знали, как это сделать?
Total votes 18: ↑11 and ↓7 +4
Views 321
Comments 28

unset() и Буратино

Website development *
Буратино дали три яблока. Два он съел. Сколько яблок осталось у Буратино? Думаете одно? Ничего подобного. Никто не знает сколько у него уже было яблок до этого. Мораль — всегда обнуляйте переменные!

Можно это было добавить в «Юмор», но когда с это встречается в работе — бывает очень даже не смешно. В этом блоге наверное все хоть раз прочувствовали на себе.
Total votes 112: ↑93 and ↓19 +74
Views 3.5K
Comments 112

10 приемов, разрушающих хрупкую красоту кода

Website development *
Статья приводится в сокращении из-за ограничения на объем материала.

Для меня программирование — это не только технология, но и, во многом — искусство. И, поэтому, большое значение имеет красота кода.

Последние несколько лет я собирал приемы программирования, разрушающие в программном коде его утонченную красоту:
  1. Объявление всех переменных в начале программы;
  2. Возврат результата функции через ее параметр;
  3. Отсутствие локальных функций;
  4. Отсутствие else if;
  5. Использование параллельных массивов;
  6. Хранение размера массива в отдельной переменной;
  7. Доступ к свойствам объекта через obj.getProperty() и obj.setProperty(value);
  8. Использование рекурсии для вычисления факториалов и Чисел Фибоначчи;
  9. Отсутствие именованных параметров функции;
  10. Невозможность объявления объектов «на лету».
Наверняка, в некоторых местах вы будете со мной несогласны — ведь чувство красоты у всех разное.


Объявление всех переменных в начале программы


В двух словах:

Переменные должны объявляться в начале логического блока, в котором они используются, а НЕ в начале функции или программы.


Читать дальше →
Total votes 402: ↑324 and ↓78 +246
Views 95K
Comments 411

Устранение неполадок xdebug с php версии 5.3

Lumber room
Кто пользуется редактором Netbeans для разработки на PHP и установленая версия интерпретатора у него > 5.3, наверное, заметил, что при сеансах отладки не отображаются переменные в области редактора «Variables». Как уже писал пользователь @grey-one здесь, вышла бета-версия отладчика 2.1.0 (уже вторая даже). Для проверки я установил все это с svn (поскольку в macports до сего времени имеется только версия 2.0.5 без поддержки php5.3):

# cd /tmp
# svn co svn://svn.xdebug.org/svn/xdebug/xdebug/trunk xdebug
# cd xdebug
# phpize
# ./configure --enable-xdebug
# cp modules/xdebug.so /ваш/путь/к/расширениям


и добавить строчку к вашему ini-файлу:
zend_extension="/ваш/путь/к/расшИрениям/xdebug.so"


ну и перезагрузить сервер:
# /opt/local/apache2/bin/apachectl graceful


Пока бета, иногда заметил ошибки «Socket exception occured» при завершении сеанса отладки. Пользуемся на свой страх и риск:)

p.s.: спасибо пользователю Fragster за коррекцию

Привожу пример типичной настройки netbeans + xdebug
Читать дальше →
Total votes 13: ↑10 and ↓3 +7
Views 389
Comments 8

Планируемые новшества в CSS

CSS *
Translation
Tab Atkins, член рабочей группы CSS и команды Google Chrome, опубликовал слайды презентации, которую он проводил в прошлую среду.

Эта презентация демонстрирует четыре относительно новых концепта
Читать дальше →
Total votes 70: ↑69 and ↓1 +68
Views 2.6K
Comments 128

Logrotate. Postrotate скрипт и имя файла

Configuring Linux *System administration **nix *
Думаю что нет *nix-админа, который не пользуется утилитой logrotate. Часто мы пользуемся ею, даже не подозревая что она установлена в системе. Однако, когда мне понадобилось пропарсить проротейченный log-файл, я был крайне удивлен.
Читать дальше →
Total votes 7: ↑5 and ↓2 +3
Views 17K
Comments 4

Стиль кода, краткость и конкурентные преимущества

Perfect code *C++ *
Sandbox
На новой работе (С++) пришлось сменить привычный стиль кода, открывающие угловые скобки { надо было ставить на той же строке, что и начало блоков if/for etc. Поначалу было неприятно отказываться от старых привычек, но за неделю новый подход мне понравился. Тогда подумал — а вдруг существуют и другие аспекты стиля, которые надо изменить несмотря на то, что они пока еще кажутся непривычными? И несмотря на то, что большинство программистов по инерции их не использует. Оказалось, что так и есть. За пару месяцев я сильно переработал стиль, результаты ниже.

Важное замечание
На изменение каждого аспекта стиля лучше давать не меньше недели на привыкание. Мозгу легче переучиваться, если изменения небольшие, легко находить аналогии со старым кодом. А если применить сразу все изменения, то код выйдет настолько непривычным, что мозг перегрузится и возникнет отвращение от слишком резкой смены.
Читать дальше →
Total votes 50: ↑18 and ↓32 -14
Views 7.1K
Comments 151

Настройка шаблонов e-mail уведомлений в 3CX Phone System

3CX Ltd. corporate blog Asterisk *Development of communication systems *

Введение


Наверняка вы знаете о том, что 3CX уведомляет пользователей и администраторов о различных событиях в системе с помощью широкого набора e-mail сообщений. В 14 версии системы появился отдельный раздел для настройки этих уведомлений. Теперь администратор системы может кастомизировать каждое сообщение в соответствии с требованиями организации в разделе Параметры – E-mail.

На вкладке E-mail и уведомления перечислены все события, которые могут быть интересны администратору 3CX. Тут же можно указать один или несколько e-mail адресов (через запятую), на которые будут отсылаться уведомления.

image

Сами сообщения предустановлены в системе на английском языке. Русскоязычным пользователям 3CX Phone System имеет смысл перевести хотя бы основные сообщения на русский язык. Однако возникает вопрос с определением переменных, используемых в этих уведомлениях. В этой статье мы поясним значения всех системных переменных, используемых в e-mail уведомлениях.

image
Читать дальше →
Total votes 5: ↑3 and ↓2 +1
Views 1.6K
Comments 0

Var и val в Java?

Java *
Translation
От переводчика: автор этой заметки — Stephen Colebourne, автор библиотеки Joda Time и Java Time API.


Следует ли добавить вывод типов локальных переменных в Java? Как раз сейчас команда разработчиков языка Java задалась этим вопросом.

Вывод типов локальных переменных


JEP-286 предлагает добавить вывод типов локальных переменных, используя новое псевдоключевое слово (интерпретируемое как «зарезервированное наименование типа»):

Явное указание типа локальных переменных зачастую не является необходимым. Разрешив разработчикам опускать его, мы хотим упростить разработку на Java, уменьшив необходимое количество формальностей, но при этом не жертвуя статической типизацией.
Читать дальше →
Total votes 30: ↑22 and ↓8 +14
Views 32K
Comments 85

MSLibrary. ПРОСТО: объявляем глобальные переменные с помощью класса singleton, для iOS и не только…

Development for iOS *Development of mobile applications *API *Objective C *Xcode *
Разработчики библиотеки MSLibrary for iOS продолжают серию очень компактных статей, посвященных тому как ПРОСТО реализовать ту или иную функцию. Никакой теории, только практика…

Итак, как правильно объявить глобальные переменные? Под глобальными мы понимаем переменные, объявленные на внешнем уровне (не static) и имеющие глобальное время жизни.

Если мы объявим переменную в одном из заголовочных файлов, например в файле MyClass.h таким, казалось бы логичным, образом:

NSString *myGlobalVariable;

а затем импортируем файл MyClass.h с помощью директивы #import в несколько файлов, например, MyClass1.h, MyClass2.h, MyClass3.h и MyClass4.h, то в результате с большой вероятностью получим примерно такое сообщение об ошибке:

duplicate symbol _myGlobalVariable in:
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass.o
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass1.o
duplicate symbol _myGlobalVariable in:
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass.o
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass2.o
duplicate symbol _myGlobalVariable in:
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass.o
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass3.o
duplicate symbol _myGlobalVariable in:
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass.o
    /Users/L/Library/Developer/Xcode/DerivedData/…/MyClass4.o

ld: 4 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Произойдет это по тому, что в результате импорта переменная myGlobalVariable будет объявлена в каждом из подключенных файлов.
Читать дальше →
Total votes 10: ↑3 and ↓7 -4
Views 2.7K
Comments 7

Как правильно использовать переменные в препроцессорах LESS и SASS

Website development *CSS *Perfect code *Designing and refactoring *IT Standards *

Правила управления переменными в препроцессорах и методика переопределения настроек


История архитектурной ошибки, её последствия, и три правила, благодаря которым вы сможете держать исходный код в порядке и снизить стоимость внесения изменений.


Предыстория


В 2014 году в компании начали редизайн проекта и в основу вёрстки мы положили свежий на тот момент Bootstrap 3.0.1. Использовали мы его не как отдельную стороннюю библиотеку, а тесно заинтегрировали с нашим собственным кодом: отредактировали переменные под наш дизайн и компилировали кастомизированный Бутстрап из LESS исходников самостоятельно. Проект оброс собственными модулями, которые использовали бутстраповские переменные и добавляли в файл с настройками свои новые переменные.


В тот момент я думал, что это правильный подход.

Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Views 30K
Comments 13

Gangnam Style сломал переменную количества просмотров

Working with video *
Gangnam Style — это сингл южнокорейского музыканта Psy. Клип начал набирать миллионы просмотров сразу после выхода. Уже 21 декабря 2012 года видеоролик первым в истории набрал 1 миллиард просмотров.

Здесь этот медиафеномен можно было бы оставить в покое, если бы не маленький факт того, что недавно Gangnam Style вскрыл недостатки видеохостинга. Оказалось, что количество просмотров хранится в 32-битной целой переменной, и счётчик остановился на 2 147 483 647. Об этом разработчики сообщили в официальном аккаунте YouTube.

Видеосервис удачно обратил дефект в пасхалку: если на странице видео навести курсор на счётчик, то будет показана иллюстрация целочисленного переполнения.
Total votes 80: ↑71 and ↓9 +62
Views 30K
Comments 41

Самый полный русскоязычный перевод Гарвардского курса по программированию CS50 2015, бесплатно на YouTube

Programming *
Sandbox
В этой статье я хочу немного рассказать о самом лучшем в мире курсе по программированию.

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

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

image
Total votes 19: ↑18 and ↓1 +17
Views 51K
Comments 27

Когда использовать var, let и const в Javascript [перевод статьи Tyler’а McGinnis]

JavaScript *
Sandbox
Привет, Хабр! Представляю вашему вниманию перевод статьи «var vs let vs const in JavaScript» автора Tyler McGinnis.

image

В этой статье вы узнаете 2 новых способа для создания переменных в Javascript (ES6), let и const. На протяжении этой статьи мы рассмотрим разницу между var, let и const, а также смежные темы такие как: “область видимости функции против блочной области видимости“, “поднятие” переменных и иммутабельность.
Total votes 27: ↑18 and ↓9 +9
Views 31K
Comments 76

Семь неожиданных переменных Bash

Configuring Linux *Shells *Software
Translation
Tutorial
Продолжая серию заметок о менее известных функциях bash, покажу вам семь переменных, о которых вы могли не знать.

1) PROMPT_COMMAND


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

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

Попробуйте запустить это в новом шелле, и увидите, что произойдёт с сессией:

$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
Читать дальше →
Total votes 69: ↑66 and ↓3 +63
Views 31K
Comments 32

О декораторах в Python

OTUS corporate blog Python *
Translation

Всем привет!


Перевод статьи подготовлен для студентов курса «Web-разработчик на Python». Интересно развиваться в данном направлении? Запишитесь на День Открытых Дверей курса и пообщайтесь вживую с преподавателем: онлайн-трансляция 23 июля в 20:00 по мск.!



Когда вы упражнялись в программировании на языке Python, вы, должно быть сталкивались с таким понятием, как декораторы. Они являются одним из самых элегантных и часто используемых инструментов в современных библиотеках и фреймворках. Декораторы — хороший способ инкапсулировать множество деталей реализации, оставляя на поверхности простой интерфейс.

Читать дальше →
Total votes 32: ↑22 and ↓10 +12
Views 14K
Comments 5

Изучаем переменные в CSS на практическом примере

CSS *HTML *


Доброго времени суток, друзья!

Однажды веб серфинг привел меня к этому замечательному коду.

«Замечательность» его (то бишь кода) состоит в практическом использовании переменных в CSS, что сильно облегчает написание стилей (использование переменных также обуславливает необычную структуру CSS). И, конечно, тема импонирует весьма — планеты Солнечной системы.

Оригинальный проект написан на Pug и Sass, мы же разберем его на HTML/CSS.

Итак, поехали.
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views 5.6K
Comments 4
1