Как бы ножки не украли...
Читать дальше...
Фотограф Ольвие Грюнвальд недавно несколько раз посетил шахту по добыче серы в кратере вулкана Кавах Льен в Восточной Яве, Индонезия. Он привез с собой необходимое оборудование, чтобы запечатлеть сюрреалистические снимки, освещенные лунным сиянием, факелами и голубым пламенем горящей серы...

Друг предложил отправить пост про панорамы в лепрозорий за для получения инвайта. Его еще надо дописать и немного переписать - будем посмотреть...
Оставил коммент к замечательной статье "Должны ли программисты работать в офисе" Николая Алименкова.
Я за собой заметил, что всячески избегаю наполненного под завязку офиса – время от 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. Мне жаль, что я не позволил/позволила себе быть более счастливым.

Комментариев нет:
Отправить комментарий