Reset SMC

Category: howto mac

Что делать если macbook не включается ?

Не спешите нести его в ремонт, часто у маков бывает проблема с зависанием System Managment Controller (SMC). Симптомы были такие, я послал OSX в Sleep mode softwareным способом через главное меню. После чего закрыл крышку ноутбука и выдернул шнур питания. Когда я захотел включить его я просто поднял крышку и ничего не произошло, при этом когда я закрывал его обратно начинал работать кулер так что его было слышно, с открытой крышкой ноутбук работала клавиатура об этом я смог понять потомучто горел индикатор Caps Lock. После ряда попыток понажимать на кнопки я понял что нужно сделать что-то осмысленое, и вот что я сделал:

Сброс SMC для Macbook или MacBook Pro с отключаемой батареей

  • выключить компьютер
  • отключить шнур питания и держать кнопку Power 10 секунд
  • отпустить power подключить батарею и шнур питания
  • включить Mac

Сброс SMC для Macbook и Macbook Pro с встроенной батареей

  • Выключить
  • Подключить адаптер питания
  • Вместе нажать клавиши Shift+Control+Option и кнопку Power
  • Отпустить клавиши
  • Запустить Mac как обычно

Сброс SMC для iMac, Mac Pro, Mac Mini

  • Выключить
  • Отключить шнур питания
  • Нажать и держать кнопку Power 5 секунд
  • Отпустить
  • Подклчить шнур питания и запустить как обычно

Решение проблемы медленого wifi на Ubuntu

Category: howto linux

Симптомы проблемы: в 11.04 При подключении к инетернету медленно или вообше не работает соединение, при этом выделяется IP и с виду все должно быть нормально и без ошибок.

Решение: Убрать режим 11n

sudo modprobe iwlagn 11n_disable=1

gksudo gedit /etc/modprobe.d/iwlagn-disable11n.conf

options iwlagn 11n_disable=1

в 12.04 после обновления модуль стал называтся iwlwifi соотвественно решение будет выглядить так

sudo modprobe iwlwifi 11n_disable=1

gksudo gedit /etc/modprobe.d/iwlagn-disable11n.conf

options iwlwifi 11n_disable=1

Кроме того для некоторых срабатывает решение:

в файле /etc/nsswitch.conf

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

заменить на

hosts:          files dns

Mongohub клиент для mongodb

Category: tools

Клиент под OSX для MongoDB - MongoHub

MongoHub logo

MongoHub это менеджер mongo баз данных. Он позволяет полностью управлять базами и структурами
mongo.

  • Нативное приложение на Cocoa
  • Прямой доступ как к локальным так и удаленным узлам mongo
  • Открытй код можно найти на github

Ниже немного скринов, ну и ссылка на офф сайт чуть выше

Perl one liner

Category: perl
perl -ne 'm/^([^#][^\s=]+)\s*(=.*|)/ && printf("%-35s%s\n", $1, $2)'

PostgreSQL recursive procedure

Category: postgresql
WITH RECURSIVE supplytree AS
 
(SELECT id, username, parent_user_id, CAST(username AS VARCHAR(1000)) AS username_fullname
FROM users
WHERE parent_user_id =1 
UNION ALL
SELECT si.id, si.username,
        si.parent_user_id,
        CAST(sp.username_fullname || '->' || si.username AS VARCHAR(1000)) AS username_fullname
FROM users AS si
        INNER JOIN supplytree AS sp
        ON (si.parent_user_id = sp.id)
)
SELECT id, username_fullname
FROM supplytree
ORDER BY username_fullname;

На выходе получим:

 id | username 
 1  | user1
 2  | user1->user2
 3  | user1->user2->user3
 4  | user1->user2

Python differential

Category: python math
#!/usr/bin/python from scipy import linspace, array from scipy.integrate import odeint,ode from pylab import plot, show import matplotlib.pyplot as plt from numpy import arange import random as rand def dotu(r,t0): x,y = r d = [0,1] d[0] = y d[1] = x-x**2-y return d def dplot(s, color="green"): t = linspace(0,55, 700) print t u=odeint(dotu,s,t) u=array(u).transpose() plot(u[0], u[1], color) for x in arange(-1.52,2, 0.25): print x dplot([x,3]) plt.grid(True) show()

Дифференциальные исчесления в python реализовываются с помощью библиотек:

http://www.scipy.org/
http://ru.wikipedia.org/wiki/SciPy

http://numpy.scipy.org/
http://ru.wikipedia.org/wiki/NumPy

Графки рисуются с помощью http://matplotlib.sourceforge.net/

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

Все баги к этому моменту починили...

Antitrust - спецэффекты в фильмах про программистов

Category: old fun

Все наверно смотрели этот фильм Antitrust, в русской локализации "Программист", дык вот в этом фильме главный герой Майло Хоффман (Milo Hoffman) со своими друзьями по сюжету весь фильм пытается скомпилировать пример из документации по Java на сайте Sun : WebServer.java именно этот файл фигурирует в сценах с монитором. Снимки и продолжение под катом...

Скриншоты кода - три разных сцены

void listDirectory(File dir, PrintStream ps) throws IOException {
        ps.println("
\n");
        ps.println("Parent Directory
\n");
        String[] list = dir.list();
        for (int i = 0; list != null && i < list.length; i++) {
            File f = new File(dir, list[i]);
            if (f.isDirectory()) {
                ps.println(""+list[i]+"/
");
            } else {
                ps.println(""+list[i]+"


" + (new Date()) + "");
    }



 /* are we doing a GET or just a HEAD */
            boolean doingGet;
            /* beginning of file name */
            int index;
            if (buf[0] == (byte)'G' &&
                buf[1] == (byte)'E' &&
                buf[2] == (byte)'T' &&
                buf[3] == (byte)' ') {
                doingGet = true;
                index = 4;
            } else if (buf[0] == (byte)'H' &&
                       buf[1] == (byte)'E' &&
                       buf[2] == (byte)'A' &&
                       buf[3] == (byte)'D' &&
                       buf[4] == (byte)' ') {
                doingGet = false;
                index = 5;
            } else {
                /* we don't support this method */
                ps.print("HTTP/1.0 " + HTTP_BAD_METHOD +
                           " unsupported method type: ");
                ps.write(buf, 0, 5);
                ps.write(EOL);
                ps.flush();
                s.close();
                return;
            }



Обьяснения под катом

Shorewall - фреймворк для построения фаерволла

Category: sys

Настройка роутинга с двумя провайдерами через shorewall. И так дано машинароутер с установленным shorewall, задача сделать на ней 2 канала. Немного о самом shorewall, - это такой framework для работы c iptables, если вам надоелj вручную писать правила, то этот инструмент решит почти все ваши проблемы.

Конфигурация shorewall

	$ ls /etc/shorewall
	  
	|-- Makefile
	|-- README.txt
	|-- accounting
	|-- actions
	|-- blacklist
	|-- capabilities
	|-- continue
	|-- ecn
	|-- hosts
	|-- init
	|-- initdone
	|-- interfaces
	|-- ipsec
	|-- ipsecvpn
	|-- maclist
	|-- masq
	|-- modules
	|-- nat
	|-- netmap
	|-- params
	|-- policy
	|-- providers
	|-- proxyarp
	|-- route_rules
	|-- routestopped
	|-- rules
	|-- shorewall.conf
	|-- start
	|-- started
	|-- stop
	|-- stopped
	|-- tcclasses
	|-- tcdevices
	|-- tcrules
	|-- tos
	|-- tunnel
	|-- tunnels
	`-- zones

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

Архитектура moskva.com

Category: admin

Проект москва.ком представял из себя главный городской портал Москвы. С посещамостью 100к-300к хостов в день.

Используемые технологии Debian Linux (etch), Nginx 0.4-0.6, Apache 2.X, PHP 5, MySQL 5.0, Memcache, Xdebug, DRBD.

Теперь по порядку

Изначально сайт работал на 3-х серверах, каждый из которых выполнял свою роль, frontend, backend, database + backups, для организации fail-over решения, этого было недостаточно, точнее fail-over решение вообше отсутствовало в каком либо виде. По скольку планировалось обслуживать большой трафик посетителей, было решено пересмотреть мощности и реализовать highload и failover систему.

Hardware

Было приобретено:

  • 2 x Dell SC1435 (2 x Duo Core AMD 2200Mhz / 2GB RAM / 70GB SATA) Спецификация
  • 4 x Dell PowerEdgeTM 2950 (4 x Core Duo Intel(R) Xeon(TM) MP CPU 3.16GHz / 16GB RAM / 300GB SCSI) Спецификация
  • 2 x SuperMicro (4 x Intel(R) Xeon(R) CPU 5130 @ 2.00GHz / 3GB RAM / 16 x 750GB SCSI Дисков + RAID 50 / 60 )

  • 2 x KVM ALTUSEN 16 ports
  • 2 x POWER CONTROL ALTUSEN 16 ports

Всего получилось 10 серверов и еще один маршрутизатор cisco express 500, и все это железо предстояло подключить и настроить. подробнее об этом дальше.

Highload n Failover

10 делились на 3 логические группы (уровни):

На каждом уровне было как минимум 2 сервере, для обеспечения отказоустойчивости 99,9% (3 уровень отказоустойчивости)

1. Уровень Loadbalance и статический контент

Это балансировщик нагрузки, в качестве которого выступал nginx(тогда еще версии 0.3) и failover демон heartbeat который следил за серверами и в случае отказа, переключал нагрузку на доступный сервер.

2. Уровень Backend workers and database

На этом уровене было 4 сервера. 2 из которых были чистыми application серверами на apache для php, и принимали запросы только с первого уровня. 2 другие сервера это Mysql база данных с Master-Slave репликацией и резервным копированием со...