Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

пятница, 24 декабря 2010 г.

Подборка #38

Есть и другие подборки: #1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11, #12, #13, #14, #15, #16, #17, #18, #19, #20, #21, #22, #23, #24, #25, #26, #27, #28, #29, #30, #31, #32, #33, #34, #35, #36, #37, #38, #39, #40

Как бы ножки не украли...


Читать дальше...

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


Друг предложил отправить пост про панорамы в лепрозорий за для получения инвайта. Его еще надо дописать и немного переписать - будем посмотреть...

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

Комментариев нет:

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