Архив автора: admin

Как справляться с большими делами? 3 самых эффективных приёма!

1. «Съедание слона»

Представьте себе, что ваша задача — это большой «слон», ну очень большой — слон большой и неподъемный. А вы хотите его съесть. Очевидно, что съесть его за один присест не удастся. Поэтому разрежьте его на части, каждую из которых можно будет съесть за раз.

Можно пригласить на трапезу гостей, каждому дать кусочек. Так же можно поступить и с делами. Разделите задачу на такое количество подзадач, которые сможете решать по отдельности. Размерность задачи уменьшится и ее решение упроститься. Кроме того, часть подзадач вы сможете делегировать соисполнителям.

2. «Швейцарский сыр»

Один из прекрасных способов начать дело — постараться превратить его в «швейцарский сыр». Для этого необходимо проделать «дырки» в деле. «Дырками мы будем называть задачи быстрого реагирования. Они могут потребовать всего 3-5 минут, но, выполнив их, вы проделаете «дырки» и дырочки в деле.

Таким образом, если у вас есть всего 10 минут времени, то вы можете выполнить 2-3 задачи немедленного исполнения. При формировании списков задач быстрого реагирования целесообразно включать те работы, которые можно быстро начать и легко выполнить. Очевидно, что они должны быть либо частью дела, либо как-то с ним связаны.

3. «Оставьте брезгливость — съешьте лягушку»

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

Лягушка — это самое тяжелое и неприятное дело. Утром, приступая к работе, необходимо начать с него. Если вам надлежит съесть двух лягушек, первой съедайте самую гадкую из них. Согласно этой методике, вам необходимо выработать устойчивую привычку решать самые важные и срочные задачи с самого утра, не тратя время на другие работы…

Автор: AdrenalinPLAY
Дата публикации: 2014-05-06T20:19:00.000-07:00

В нашей власти облечь свои чувства в слова…

лента сердечко  Преподавательница университета на одной из пар объявила своим студентам об эксперименте, участниками которого все они должны были стать. Для этого она раздала каждому по четыре голубые ленточки, которые были сколоты в форме бантика, на каждой из них было написано: «Ты очень важен для меня», и попросила, чтобы каждый приколол одну ленточку себе на одежду, потому что каждый студент — важный и значимый человек в ее жизни.
Читать

Как определить дисбалансы в своей жизни?

белое и черное ангелы дисбалансы

В продолжение темы: Как прийти к Гармонии в жизни и получить доступ к неиссякаемому источнику энергии рассмотрим сегодня как определить дисбалансы в своей жизни.

Для оперативного определения дисбалансов, необходимо протестировать себя по следующим показателям нарушения баланса (ставьте галочку или 1, если это есть у Вас):
Читать

Видеолекции курса Параллельное программирование

Видеолекции курса Параллельное программирование.

Лектор: Евгений Калишенко.

В курсе будет рассказано про

  • многопоточное программирование на примере
    • С++: POSIX threads, Boost, OpenMP, Intell TBB и
    • Java: threads, java.util.concurrent, Fork/Join framewok
  • теорию параллельных вычислений: алгоритмы консенсуса, атомарные регистры, lock-free и wait-free алгоритмы, шаблоны || программирования
  • вычислительные кластеры (на примере MPI)
  • другие способы повышения производительности (транзакционная память, асинхронный ввод/вывод…)

Репозиторий: http://code.google.com/p/hpcource

Лекция 1. Введение.

  1. Мотивация к применению параллельных вычислений
  2. Закон Амдала
  3. Общий взгляд на высокопроизводительные системы начиная от расширений SSE, через многоядерность к узлам кластеров
  4. Обзор технологий многопоточного программирования
    • Posix threads
    • Java threads, Boost threads
    • OpenMP
    • Intel TBB
    • Java.util.concurrent
    • Fork/Join Framework


Посмотреть видео на сайте Лекториума

Дополнительные материалы


Скачать: Презентация

Лекция 2. Корректная работа с потоками.

  1. Механизм запуска потока
  2. Корректное завершение потоков
  3. Сравнение различных потоков (POSIX, boost, java)
  4. Обработка исключений


Посмотреть видео на сайте Лекториума

Лекция 3. Примитивы синхронизации.

  1. Необходимость синхронизации: гонки данных
  2. Реализация примитивов синхронизации: алгоритмы Петерсона и Лампорта
  3. Виды мьютексов: рекурсивные/нерекурсивные, читатели/писатели…
  4. Корректные захват/освобождение примитивов
  5. CAS-операции и атомики


Посмотреть видео на сайте Лекториума

Дополнительные материалы


Скачать: Презентация

Лекция 4. Примитивы синхронизации — 2.

  1. Condition variables: использование wait/notify
  2. Алгоритмы синхронизации: грубая, тонкая


Посмотреть видео на сайте Лекториума

Скачать: Презентация

Лекция 5. Алгоритмы синхронизации.

  1. Алгоритмы синхронизации: оптимистичная, неблокирующая
  2. Классы алгоритмов: lock-free, wait-free
  3. Пулы потоков


Посмотреть видео на сайте Лекториума

Скачать: Презентация

Лекция 6. Ошибки || программирования.

  1. Гонки данных (Data Race)
  2. Взаимная блокировка (Deadlock)
  3. Блокировки при fork многопоточных программ
  4. Инверсия приоритетов


Посмотреть видео на сайте Лекториума

Лекция 7. Атомарные снимки регистров.

  1. SWMR-регистры
  2. Lock-free snapshot
  3. Wait-free snapshot


Посмотреть видео на сайте Лекториума

Лекция 8. OpenMP и Intel TBB.

  1. Обзор OpenMP: параллельные секции, области видимости переменных, ограничения
  2. Обзор Intel TBB: алгоритмы, аллокаторы, деревья задач, планирование


Посмотреть видео на сайте Лекториума

Скачать: Презентация

Лекция 9. Шаблоны || программирования.

  • Структурные шаблоны
    1. Декомпозиция по задачам
    2. Геометрическая декомпозиция
    3. Recursive Data
    4. Pipeline
  • Некоторые программные структуры
    1. Parallel loops
    2. Boss/Worker
  • Разное
    1. Double check
    2. Local Serializer


Посмотреть видео на сайте Лекториума

Скачать: Презентация

Лекция 10. Кластерные вычисления.

  • История и назначение стандарта
  • Обмен сообщениями
    1. С блокировкой
    2. Без блокировки
    3. Отложенные запросы на взаимодействие
    4. Тупиковые ситуации (deadlock)
  • Взаимодействие процессов
    1. Группы и коммуникаторы
    2. Операции коллективного взаимодействия процессов
    3. Редукция
    4. Виртуальные топологии
  • Средства анализа производительности


Посмотреть видео на сайте Лекториума

Скачать: Презентация

Лекция 11. Map/Reduce — теория и практика.

  • Идея Map/Reduce
  • Hadoop
    1. Обзор архитектуры
    2. Примеры задач
    3. Детали реализации
    4. Популярные расширения
  • Другие реализации M/R: достоинства и недостатки
    1. Проблемы Hadoop
    2. Spark
    3. Disco
  • Дополнительно
    1. Что не надо использовать для построения M/R приложений
    2. Отказоустойчивость M/R приложений


Скачать: Презентация

Продолжение следует…

Дополнительные материалы:
Сайт курса.
Видеолекции курса Параллельное программирование (2012).
Видеолекции курса Архитектура ЭВМ и основы ОС (2013).
Курс Параллельное программирование в ЗНУ. Лектор: Бувайло Дмитрий Павлович.

Автор: Roman Brovko

Когда это мешает в жизни!

Когда человек по-настоящему стремится к какой-нибудь  цели,  он стремится к тому, чтобы преодолеть все препятствия, которые встречаются ему на пути. И это естественно, ведь препятствия нужно преодолевать. Или отказываться от цели. Так вот, для тех девушек и женин, у которых достижение цели, неважно, в бизнесе или в личной жизни практически  невозможно без внешней привлекательности, порой именно это и является серьёзным препятствием. У кого-то это – борьба с лишним весом, у кого-то – с плохим состоянием волос. Ну, а кому-то приходится заботиться о хорошем состоянии кожи. Можно этому радоваться, можно огорчаться, но вряд ли кому-то приносить удовольствие, когда девушка, женщина, имеет какие-то дефекты кожи , будь то врождённые или приобретенные. Это реальность, и поэтому девушки и женщины стремятся к тому, чтобы эти дефекты извести. К примеру, для многих такой проблемой являются морщины. Причём речь идёт не о тех, морщинах, которые появляются из-за возраста, а так называемые мимические морщины, которые формируются под влиянием особенностей мимики и строения лица. Но ведь окружающим мужчинам не будешь объяснять, что, дескать, это я не старая, я просто улыбаюсь часто! Как минимум, не поймут. Поэтому единственно правильный выход – это убрать мимические морщины на лбу.  Без волшебства и шарлатанства. Конечно, это не означает, что это сделать легко и просто, но это возможно! Подходов и технологий существует  несколько, с разным уровнем эффективности и нужно выбирать не тот, который принесёт результат как можно быстрее, а тот, который гарантированно не навредит! Увы, не всем хватает терпения, а также осмотрительности. В первую очередь – с выбором клиники, в которой эту операцию будут делать. Ведь обещают хороший результат практически все, но  гарантировать его может только клиника, которая имеет опыт в проведении подобных операцию, плюс имеющая современную техническую базу. Но ведь и сама операция, даже очень удачная – это ещё далеко не всё. Нужно после этого правильно ухаживать за кожей, чтобы потом не возникло осложнений. Тут тоже важна роль врача, который будет эту процедуру – он может дать совет, что делать потом. Этого, увы, тоже во многих клиниках нет. Поэтому стоит проанализировать информацию, лучше не рекламную, а мнение тех, кто сам уже пользовался конкретной клиникой. Это тоже не абсолютная гарантия, но риск снижается к минимуму.

Работаем с pip

Думаю, все применяют pip и знают основы:

$ pip install -U sqlalchemy
$ pip install -r requirements.txt
$ pip freeze > requirements.txt
$ pip uninstall sqlalchemy

Давайте посмотрим, что ещё полезного умеет эта команда

Ставим пакет локально для пользователя

$ pip install --user pep8

Т.е. если мы не в виртуальном окружении (virtualenv/virtualenvwrapper), то пакет pep8 будет установлен куда-то вроде ~/.local/lib/python3.4/lib.

Главная прелесть метода — не нужны права суперпользователя для установки пакетов (не надо писать sudo pip install ..., К тому же так гораздо аккуратней.

Создаем конфигурационный файл

Т.к. опция --user нужна часто, стоит записать её в конфиге как значение по умолчанию. Создаем файл ~/.pip/pip.conf и пишем в него

[install]
user = true

Готово.

Внимание: user=true не работает с виртуальными окружениями.

Принудительно переустанавливаем пакет

Реальный пример: я поставил pyzmq. Библиотека скачалась и скомпилировалась. Потом я заметил что она скомпилировалась со неправильной версией libzmq. libzmq я переставил, теперь нужно пересобрать pyzmq:

$ pip install -U --force-reinstall pyzmq

Для работы --force-reinstall обязательно нужно указывать -U(--upgrade).

Смотрим на список установленных (доступных) библиотек

$ pip list

Выясняем, какие библиотеки можно обновить

$ pip list -o
$ pip list --outstanding

Для выполнения команды pip неоднократно делает зазыр в интернет, так что придется подождать.

Устанавливаем библиотеку для работы над ней

Находясь в корне проекта, в той же папке где лежит setup.py:

$ pip install -e .

Этот способ лучше вызова

python setup.py develop

хотя бы тем что работает даже если setup.py не использует setuptools.

Установка необязательных зависимостей

Если setup.py содержит extras_requireто дополнительные зависимости можно установить так:

$ pip install -e .[PDF,reST]

Получаем информацию об установленной библиотеке

$ pip show pyflakes

Так можно узнать версию, местонахождение на диске и зависимости.

Ищем в PyPI

msgpack имеет неудобное имя библиотеки (msgpack-python), которое я постоянно забываю.

$ pip search msgpack

покажет список всех пакетов, в названии которых есть msgpack.

Только не делайте:

$ pip search django

Дуплит пару минут, выдает 5754 результата 🙂

Автодополнение

И, наконец, последнее. Я люблю пользоваться bash completion. Чтобы настроить эту удобную штучку для pip выполните:

$ pip completion --bash >> ~/.bashrc

или для zsh:

$ pip completion --zsh >> ~/.zprofile

Как ни странно pip --help стесняется рассказать о том, что у него есть команда pip completion — но оно работает.

Автор: Andrew Svetlov