Как бы ножки не украли...
Читать дальше...
Фотограф Ольвие Грюнвальд недавно несколько раз посетил шахту по добыче серы в кратере вулкана Кавах Льен в Восточной Яве, Индонезия. Он привез с собой необходимое оборудование, чтобы запечатлеть сюрреалистические снимки, освещенные лунным сиянием, факелами и голубым пламенем горящей серы...
Друг предложил отправить пост про панорамы в лепрозорий за для получения инвайта. Его еще надо дописать и немного переписать - будем посмотреть...
Оставил коммент к замечательной статье "Должны ли программисты работать в офисе" Николая Алименкова.
Я за собой заметил, что всячески избегаю наполненного под завязку офиса – время от 12 до 17. В это время меня очень тянет суетиться, причем всякие перепробованные методики типа помидорок в это время больше всего эксцепшенов выдают. В офисе мне лично комфортно работать с 6 утра до 11 дня – людей еще почти нет. И после 19 – уже никого нет. В остальное время я сбегаю домой, там сплю и работаю еще два часа – пока Жена с Ребенком в магазин ходит. Дорога из дому в офис занимает 15 минут пешим ходом. Из этого всего получается, что я убегаю от массового скопления людей.
Наушники каждый день на ушах не выход, потому как чувствую глохну, да и занимать творческие ресурсы мозга музыкой во время творческой работы не эффективно. В общем должна быть идеальная тишина, а значит как бы мне не хотелось работать раз в неделю в какой-то кафешке с вайфаем – не получится (но все же я попробую).
Теперь про командную работу. Работа в потоке как наркотик – такой дозы хочется еще и еще. А в команде (особенно, когда ты знаешь много про проект) нет места потоку – хочется куда-то спрятаться от постоянных вопросов и предложений, митингов и прочего. Но и без команды сложно по понятным причинам. И где-то между полным отстранением и сидением в одном кубике по 8 часов с командой находится золотая середина.
Мне кажется, что стандарт в 8 часов в день – морально устарел – работе над 1 каким-то направлением уделять нужно не более 4 часов, отдаваясь полностью на этот интервал полностью. В дне остается еще по несколько отрезков в 4 часа на другие ценные области в жизни – как то хобби (если работа != хобби), семья, внутренний мир, здоровье.
Вот я сейчас пишу этот текст, а рядом в кубике сквозь мои наушники пробивается звук громко смеющегося напарника. Нет, напарник хороший парень, но именно сейчас почему-то он меня раздражает. Мысль ушла, поток оборвался. После такого хочется уйти куда-то в подвал и там поработать….
Вот если был бы выключатель ушей. Или как в виртуальной реальности – лег, надел на голову какие-то датчики и погрузился в работу. Думаю, мы на пути к этому. Вот там-то и можно будет не меняя своего местоположения видеться с командой и работать в любом месте, где пожелаешь… Подождем немного.
50 цитат о программировании ...
В груви профайлинг упрощается.
public static void main(String[] args){ getTimeToRun({ blablabla1(); blablabla2(); }); } private void getTimeToRun(toRun) { def startTime = System.currentTimeMillis(); toRun(); System.out.println((System.currentTimeMillis() - startTime) + "ms"); }
Кто такой trouble-shooter. А что, если попробовать себя в этом?
Ух! люблю я рефакторинг.... Новая интересная головоломка, в студию:
package com.fullbinarytree; public class FullBinaryTree { private Node rootNode, nodeForInsert; private int maxHeight; private final int initialHeight = 1; public FullBinaryTree(Object rootNodeValue) { rootNode = new Node(rootNodeValue, null); maxHeight = initialHeight; // Minimal height for initialization nodeForInsert = null; } public void insert(Object leftChildNodeValue, Object rightChildNodeValue) { getHeight(); // Updating data before inserting new child nodes nodeForInsert = null; getNodeForInsert(rootNode, initialHeight); nodeForInsert.insert(new Node(leftChildNodeValue, rootNode), new Node(rightChildNodeValue, rootNode)); //System.out.println("Node: " + nodeForInsert + " is inserted"); } public int getHeight() { scanTree(rootNode, initialHeight); return maxHeight; } private void getNodeForInsert(Node currentNode,int currentHeight) { if (! currentNode.isLeaf()) { if (isLevelClosed(currentHeight)) { //System.out.println("Level: " + currentHeight + " is closed"); Integer newHeight = currentHeight + 1; //System.out.println("Level: " + newHeight + " is closed"); getNodeForInsert(currentNode.getLeftChildNode(), newHeight); getNodeForInsert(currentNode.getRightChildNode(), newHeight); } else { //System.out.println("Level: " + currentHeight + " NOT closed"); } } else { if (currentHeight != maxHeight) { if (nodeForInsert == null) { nodeForInsert = currentNode; } else { // do nothing } } else { if (nodeForInsert == null) { nodeForInsert = currentNode; } else { // do nothing } } } } private boolean isLevelClosed(int levelNumber) { int result = LeafNodesOnTheLevel(rootNode, initialHeight, levelNumber, 0); // int quantityOfMembersOnTheLevel = (int) Math.pow(2, levelNumber); // System.out.println("Level: " + levelNumber + " Leaves: " + result + "/" + // quantityOfMembersOnTheLevel); return result > 0 ? false : true; } private int LeafNodesOnTheLevel(Node currentNode, int currentHeight, int level, int rez) { int result = rez; if (currentNode.isLeaf()) { if (currentHeight == level) { result += 1; } else { //System.out.println("do nothing"); } } else { Integer newHeight = currentHeight + 1; result += LeafNodesOnTheLevel(currentNode.getLeftChildNode(), newHeight, level, result); result += LeafNodesOnTheLevel(currentNode.getRightChildNode(), newHeight, level, result); } return result; } private void scanTree(Node currentNode, int currentHeight) { if (currentNode.isLeaf()) { if (maxHeight < currentHeight) { maxHeight = currentHeight; } else { // do nothing } } else { Integer newHeight = currentHeight + 1; scanTree(currentNode.getLeftChildNode(), newHeight); scanTree(currentNode.getRightChildNode(), newHeight); } } @Override public String toString() { return rootNode.toString(); } } package com.fullbinarytree; class Node { private Object value; private Node parent; private Node leftChildNode; private Node rightChildNode; public Node(Object value, Node parent) { this.value = value; this.parent = parent; leftChildNode = null; rightChildNode = null; } public boolean isRootNode() { return parent == null; } public Object getValue() { return value; } public boolean isLeaf() { return (leftChildNode == null && rightChildNode == null); } public void insert(Node leftChildNode, Node rightChildNode) { this.leftChildNode = leftChildNode; this.rightChildNode = rightChildNode; } public Node getLeftChildNode() { return leftChildNode; } public Node getRightChildNode() { return rightChildNode; } @Override public String toString() { String resultString = ""; if (! isLeaf()) { String leftNodeString = getLeftChildNode() == null ? "null" : getLeftChildNode().toString(); String rightNodeString = getRightChildNode() == null ? "null" : getRightChildNode().toString(); resultString += "(" + getValue() + "," + leftNodeString + "," + rightNodeString + ")"; } else { resultString += "(" + getValue() + ",,)"; } return resultString; } }Реализация сбалансированного бинарного дерева, в которое можно вставить листья, два новых листа максимальную глубину и напечатать на экране. Используется рекурсия. Задача - упростить максимально.
Прикольная цацка...
1. Я сожалею, что у меня не было смелости, чтобы жить жизнью, правильной именно для меня, а не жизнью, которую ожидали от меня другие.
2. Мне жаль, что я так много работал.
3. Мне жаль, что у меня не было смелости выразить свои чувства.
4. Мне жаль, что я не поддерживал отношения со своими друзьями.
5. Мне жаль, что я не позволил/позволила себе быть более счастливым.
Комментариев нет:
Отправить комментарий