среда, 3 декабря 2014 г.

Как я на голодные игры ходил....

   Привет, мой дорогой блог.

   Сегодня я расскажу тебе, чем я занимался на второй день после моего дня рождения.
  
Голодные игры
Голодные игры
   Если посмотреть  картинку в правой части этого окна, то можно увидеть...
   -Что можно увидеть то?        
   - Да толстую женщину из магазина и надпись "Голодные игры".  Если бы название было таким, то я бы с большей охотой пошел на этот фильм. А так я пошел на него по инерции, ибо посмотрел уже первые две части. А люди ведь они любопытные, и я не оказался исключением. А еще я люблю халяву. У нас в кинотеатрах можно сходить бесплатно в кино в течение 2 дней после дня рождения:) Халява все-таки существует.
 
   Итак о фильме:
   Фильм на твердую такую очень твердую тройку. А все потому, что фильм состоит из чуть более чем занудства. Разговоры, разговоры, разговоры... Да разговоры заставляют нас думать. А кого-то заставляют зевать, спать или просто уходить из зала в поисках чего-нибудь более увлекательного. Сидя на диване ко мне в голову пришла одна мысль, а не проекция ли это на современный мир.  Не знаю, как там было в книге, я ее не читал, но здесь действие почти как в реальности. Я имею ввиду ситуацию на Украине. Сепаратисты - они же граждане Новороссии, Майдан, хаус. Все тоже самое.  Как будто волнения происходили по сценарию этого фильма. А на самом деле в фильме показали реальную революцию, ее реальный сценарий. Все революции мира проходили по примерно такому же сценарию. Так что проекций можно провести массу:)

   В общем, фильм мне не понравился. Но все же рекомендую сходить на него, на какой-нибудь самый дешевый сеанс, чтобы утолить свой интерес, но только это для тех, кто уже смотрел первые две части. Остальные же лучше дождитесь 4й и посмотрите сразу все 4ре части.
Конец моего повествования....:)
  

понедельник, 10 ноября 2014 г.

Как я сигнализацию автоваза чинил.

   Всем привет!
   Ох, как давно я ничего не писал, а все потому, что я перестал быть тестировщиком, и теперь я работаю в IT-Supporte, помогаю умным дядькам сис админам работать с нашим продуктом.
Наверное, кто-то скажет, зачем тогда ты сюда пишешь? Но тестировщик - это не профессия, это такое состояние души. Люди с детства любят, разобрать какой-нибудь агрегат, проверить его на прочность, не даром дети так часто ломают свои игрушки, они устраивают им нагрузочное тестирование....


   Итак, теперь о главном. Несколько лет назад я стал владельцем автоваза, а именно Лады Калины. Пользовался этим авто успешно на протяжении этих лет, и как то раз, с утра я решил отправится по делам. Подхожу к своему автомобилю, нажимаю на кнопку брелка....Нажимаю еще и еще... Но брелок не реагирует.  Не горит и не мигает индикатор.
И тут на меня нашла грусть... 
   А все потому, что данный брелок у меня один. Печаль была недолгой, я стал звонить по конторам, которые занимаются ремонтом брелков и установкой сигнализаций на авто. 
В некоторых мне говорили, что ремонт будет стоить 1000р, если у них получится брелок все-таки починить. Какие-то сомнительные предложения. 
   В одной конторе мне сказали, что брелок починить будет стоить 500р. Я приятно удивился, приехал к ним, как и договаривались, но мастера не оказалось на месте. Решил, что не буду совершать попытки отыскать его. Все же уже не ребенок и подобные игры мне ни к чему.

   Тогда я решил взять ситуацию в свои крепкие руки и поискать информацию на форумах.
В итоге я наткнулся на статью, где человек, у которого был подобный брелок, но другой автомобиль - УАЗ Патриот, описал, что проблему решил заменой кварцевого резонатора.
  
   В моем сознании затаилась надежда на то, что я сам смогу решить проблему.
Разобрав брелок и чуть ковырнув ногтем этот резонатор, мне удалось сломать его:) Далее я стал обзванивать все конторы, в которых возможно есть данный электронный элемент. Обзвонил все радио магазины и сервисы по ремонту радио аппаратуры, но результат оказался тщетным.
Тогда я решил найди данный элемент на просторах интернета. Интернет - замечательная штука, там найдешь все, что нужно. И я нашел. Стоимость данного элемента 20 - 30 рублей.
Но доставка 300р. Как то не особо дешево - это по мне. Поэтому данный агрегат я заказал из китая за 200 р 20 штук :).

   Вот сегодня наконец-то дождался посылки. Ждал около месяца. Резонатор пришел и я его успешно припаял.  Самый, наверное, трогательный момент был - это когда я подошел к машине, нажал кнопку закрытия дверей на брелке, и двери закрылись!!!!! Это успех! И сегодня у меня праздник.

   Ниже опишу, что за деталь я заказал, и приложу фотографии.


   Кварцевый резонатор на 13.560 Мгц. Такой резонатор стоит во всех стандартных брелках автоваза. И в большинстве случаев из строя выходит именно он.


   Подведу итог по стоимости ремонта:

1.Паяльник  - 40р (брал в FixPrice)
2.Припой 50р
3.Кварцевый резонатор  13.560 Мгц (20 шт) - 200р
4.Починить что-то своими руками - бесценно!:)

Итог: 290р.

По моему, недорогой ремонт.

Фотографии:

замена кварцевого резонатора
Брелок автосигнализации



воскресенье, 17 июня 2012 г.

Cause: java.net.SocketException: Unexpected end of file from server

The Bug
   Добрый день, мой дорогой дневник.
   Я наконец-то нашел причину в моем любимой инструменте автоматизированного тестирования Jmetr'e следующего исключения: 
Cause: java.net.SocketException: Unexpected end of file from server 
   Кратко опишу, что я делал, чтобы эту причину найти.
   1. Переносил Tomcat c одной машины на другую.
   2.Увеличивал timout в tomcat'e и Jmetr'e.
   3. Вносил изменения в свое приложение, при этом временами казалось, что исключение пропало...
   4.Писал письма коллегам с целью найти того, кто мне поможет.
   5. Бегал по офису и жаловался на тяжелую жизнь тестировщика.

   Все эти манипуляции мне не помогли. Когда уже не было сил, что было делать, я решил увеличить память для Jmetr'a. И вот чудо!Оно работает!Действительно, Jmetr'у просто не хватало памяти. Но признаться в этом он постеснялся.

   Надеюсь эта статься вам чем-то поможет:) Не наступайте на мои грабли!

среда, 18 апреля 2012 г.

Java и модификаторы доступа

   Привет, Марсиане. Сегодня я поведаю вам еще немного информации о очень увлекательном и самом распространенным языке на планете. На нем говорят даже бабушки. В общем речь идет о JAVA. 
   Что-то зачастил со статьями. Когда-то примерно год назад решил, что буду писать каждый день и хотя бы по чуть-чуть. И таким образом разовью в себе писательский или еще какой-нибудь талант:)
   Речь сегодня пойдет о модификаторах доступа. В Java их всего три:
  1. private - модификатор открытого доступа
  2. public - модификатор закрытого доступа
  3. protected - модификатор защищенного доступа
   Дальше обо всем по порядку.
   Итак, модификатор private позволяет скрывать методы и поля класса от любопытных глаз. Т.е. если у метода или класса будет этот модификатор, то вне класса к нему нельзя будет обратиться. 
Этот модификатор позволяет придерживаться инкапсуляции данных
   Модификатор доступа public предоставляет полную свободу как внутри класса, так и снаружи его. Чем плох этот модификатор? А плох он тем, что предоставляет неограниченную свободу программистам. Дай ребенку волю, так он всю квартиру разнесет и устроит для соседей аквапарк. Тоже самое и с программистом. Свобода должна быть в меру.
   Модификатор protected. Я называю его золотой серединой. Ибо методы и поля, объявленные с таким модификатором можно использовать только в подклассах, а так же классах находящихся в том же пакете. Как правило в большей степени используют этот  модификатор для методов, нежели для полей. Так как существует вероятность, когда без вашего ведома другие программисты будут использовать поля вашего супер класса в своих подклассах. После этого вы уже не сможете изменить реализацию класса не уведомив об этом других программистов.
   
   Ниже определены несколько правил, которые я определил для себя. Но, ими могут пользоваться и другие программисты.
  1. Все поля класса объявлять с модификатором private. 
  2. Все методы, которые не нужны вне класса делать закрытыми (private).
  3. Если метод нужен вне класса, то определять его открытым (public).
  4. Если возможно так случится, что метод понадобится в других классах, то определяем его защищенным.
  5. Если все-таки очень захотелось использовать поля супер класса в подклассах, то конечно же можно использовать модификатор protected. Но лучше этого не делать.
  6. Модификатор public использовать только для констант. Полей объявленных с ключевым словом final.
В заключении хочу сказать, что на самом деле есть еще один модификатор доступа. Он невидимый, но он существует:) Если метод или поле определить без модификатора, то область их видимости распространяется только на пакет. 
     
   

вторник, 17 апреля 2012 г.

Abstract class. What is it?

   Абстрактные классы. Что же это? И с чем это едят? Под сырным или укропным соусом? На эти и другие вопросы ответ будет дан ниже.
   Иногда возникает ситуация, когда мы имеем супер класс, большинство его методов используем в подклассах. Супер классы находясь в верхней части иерархии становятся настолько абстрактными, что их можно рассматривать как определенную базу для разработки других классов. В этом случае необходимо создавать абстрактные классы. 
abstract class   На рисунке слева изображена иерархическая цепочка классов, в которой определен абстрактный класс "Насекомое" и пара подклассов.
   Данный класс имеет два подкласса "Жук" и "Муха". Действительно "Жук" и "Муха" являются насекомыми, а обратное утверждение не может быть верным, ибо не каждое насекомое может быть мухой или же жуком.
   С абстрактными классами действительны следующие утверждения:
  • Нельзя использовать конструктор для абстрактного класса.
  • Если в подклассе не определить все методы абстрактного класса, то подкласс так же становится абстрактным.
  • Возможно создание массива абстрактных классов, где элементы массива инициализированы подклассами. При этом у элементов массива возможно вызывать методы только абстрактного класса.
   Обо всем этом далее более подробно.
   Для начала об определении абстрактного класса. Абстрактный класс обозначается в коде следующим образом
abstract class Insect {

}
   Абстрактный класс по определению должен содержать абстрактные методы, которые представляют собой прототипы методов, реализованных в подклассах.
   Для класса Insect определим метод getDesctiption(). C его помощью мы получим описание данного объекта.К примеру: Жук богомол любит траву, но и не против полакомиться своими соседями
public abstract class Insect {
 private String name;
 
 public Insect(String n){
  this.name = n;
 }
 
 public String getName(){
  return this.name;
 }
 
 abstract public String getDecription();
}
   Чтобы было возможно работать с этим методом, его необходимо определить в подклассе Fly
public class Fly extends Insect {
 public Fly(String n){
  super(n);
 }

 public String getName() {
  return super.getName();
 }

 /**
  * Переопределенный метод
  */
 @Override
 public String getDecription() {
  return  "Жук " + getName() + " любит питаться пальчиками людей";
 }
}
   Класс Fly уже нельзя назвать абстрактным, так как он определил все методы (точнее один единственный) своего супер класса Insect. Обычно переопределенные методы обозначаются с помощью конструкции @override. Она явно дает знать, что данный метод не собственный у класса, а метод переопределенный.
   Для класса Insect нельзя вызывать конструктор, т.к. это приведет к ошибке:
new Insect("полоскун");
Данный код приведет к ошибке. Но без проблем можно создать объект подкласса
Fly fly = new Fly("Навозная");
Несмотря на то, что у абстрактных классов нельзя вызывать конструктор, но переменные абстрактных классов все же можно использовать. Ниже показана эта возможность:
Insect[] insect = new Insect[2];
  insect[0] = new Fly("Цеце");
  insect[1] = new Bug("Усач");
  
  for(Insect i : insect){
   System.out.println(i.getDecription());
  }
Здесь мы создаем массив класса Insect, элементы которого инициализируем экземплярами подклассов Fly и Bug и далее вызываем метод getDecription(). Ниже весь код программы:
public class TestBug {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Fly fly = new Fly("Навозная");
  
  Insect[] insect = new Insect[2];
  insect[0] = new Fly("Цеце");
  insect[1] = new Bug("Усач");
  
  for(Insect i : insect){
   System.out.println(i.getDecription());
  }
 }

}

//Абстрактный класс
public abstract class Insect {
 private String name;
 
 public Insect(String n){
  this.name = n;
 }
 
 public String getName(){
  return this.name;
 }
 
 abstract public String getDecription();
}

public class Bug extends Insect {
 public Bug(String n){
  super(n);
 }
 public String getName(){
  return super.getName();
 }
 @Override
 public String getDecription() {
  return getName() + " спаситель черепах";
 }
}

public class Fly extends Insect {
 public Fly(String n){
  super(n);
 }

 public String getName() {
  return super.getName();
 }

 /**
  * Переопределенный метод
  */
 @Override
 public String getDecription() {
  return  "Жук " + getName() + " любит питаться пальчиками людей";
 }
}
На этом все! Спасибо:)

//ActionScript3 //C# //CSS //Java //JavaScript //Python //Sql //Xml