Создание объекта класса по его имени
В общем виде это выглядет так (http://java-online.ru/java-reflection.xhtml): 123Class aclass = Class.forName("Test"); Object obj = aclass.newInstance(); Test test = (Test) obj; Пример: файл Person.java с объявлением интерфейса, в котором содержатся классы: 123456789package com.javarush.task.task14.task1411; public interface Person { class User implements Person { void foo() { System.out.println("Something"); } } class Coder implements Person { void foo() { System.out.println("Something"); } } } фрагмент файла Solution.java, находящийся в том же пакете: 1234567try{ Class c = Class.forName("com.javarush.task.task14.task1411.Person$User"); Person person = (Person)c.newInstance(); } catch (Exception | NoClassDefFoundError e){ System.out.println(e); } Замечу, что если в строке 2 вместо $User будет $user (ошибка в регистре), то будет брошен NoClassDefFoundError.
Материалы по рефлексии
http://java-online.ru/java-reflection.xhtml
Несколько типов исключений в одном блоке Catch
123456try{ ///Something } catch (Exception | NoClassDefFoundError e){ System.out.println(e); } Здесь в одном блоке Catch мы отлавливаем исключения двух типов. Замечу, что NoClassDefFoundError не является наследником класса Exception.
Изменение регистра. Сделать первую букву строки заглавной.
1234public static String firstUpperCase(String string){ if (string == null || string.isEmpty()) return ""; return string.substring(0, 1).toUpperCase() + string.substring(1).toLowerCase(); }
pfSense — Решение проблем
Второй раз встречаюсь с ситуацией, решил написать здесь. Симптомы: Не прикрепляются файлы к письмам на Яндекс почте На некоторых компьютерах очень тугой интернет, не открываются некоторые файлы. Причём на других компьютерах может быть нормально. Перед этим: Аварийное отключение питания компьютера с pfSense Web-интерфейс pfSense: Disk usage: / (ufs): 100% of 70G Решение: Заходим в Web-интерфейс pfSense -> Status -> Services Останавливаем Squid Подключаемся к pfSense при помощи Putty Очищаем файлы кэша: rm -fr /var/squid/cache/* Создаём новый кэш: squid -z Запускаем Squid
Создание корпоративного чата
Добрый день! Достаточно давно я хотел огранизовать корпоративный чат, да всё никак не мог определиться на каком ПО всё это строить. Задача: бесплатный, сервер должен быть локальным и желательно под линукс, возможность передачи файлов желательно и для пользователей кто оффлайн, красивый интерфейс и смайлики :). Путём проб и ошибок всё-таки пришел к конечному результату, который сейчас используем. Чтобы избавить Вас от столь мучительных поисков — опишу весь процесс тут. Итак, что я пробовал: Bimoid Плюсы: Бесплатный; Сервер ставится в локальную сеть; Красивый интерфейс; Красивые смайлики; Передача файлов. Минусы: Сервер только для Windows; Передача файлов только для онлайн пользователей, т.е. если я отправляю файл тому, кто сейчас не в сети, то когда он придёт, файл этот уже не получит. Всё бы ничего, но передача файлов работает далеко не всегда. Даже при отключенных антивирусе с фаерволом на обеих сторонах — возникают ошибки передачи. Из-за этого пришлось отказаться от него. MyChat Плюсы: Сервер…
Setcookie не работает
Добрый день! Вот решил поделиться своим открытием насчёт функции Setcookie в PHP. При генерации страницы мне нужно чтобы у клиента установился определённое значение в cookie. Поковырявшись с Setcookie и убедившись что оно не работает, я обычно бросал это неблагодарное дело и пользовался JavaScript`ом, однако если у клиента отключены скрипты, то такой фокус не прокатит. Так почему же Setcookie не работает? В основном это две причины: очевидная и не очень. Очевидная причина: Как пишут нам в инструкции cookie должны передаваться до того как будут выведены какие-либо другие данные скрипта (это ограничение протокола). Это значит, что в скрипте вызовы этой функции должны располагаться прежде остального вывода, включая вывод тэгов <html> и <head>, а также пустые строки и пробельные символы. Да, это очень важное замечание, поскольку, проигнорировав его, вы получите сообщение об ошибке следующего содержания: Cannot modify header information — headers already sent by (output started at… Типа невозможно изменить заголовки страницы, так…
Яндекс, что ты делаешь?! Прекрати!!!
В конце мая 2016 года на этом сайте я решил заменить счётчик посещений от Lifeinternet на Яндекс Метрику. Причиной стал перевод сайта на https, а Lifeinternet его не поддерживает. Зарегистрировался, вставил JavaScript-код на сайт и начал радоваться отображению результатов: Дааа, это поинтереснее чем стандартная статистика WordPress! Тут тебе и: Доля новых/старых посетителей Источник трафика (с поисковиков, прямые заходы, внутренние переходы и т.д) Глубина просмотра Время на сайте Устройство, с которого происходил просмотр И даже примерный возраст аудитории! (тут наверно как-то проходит связь с социальными сетями, иначе как ещё определить возраст.. хммм, молодцы!) Так я жил и радовался пока не решил, спустя полгода, полазить по менюшкам яндекс-метрики, где обнаружил много интересного, занятного, а порой и пугающего! (О_о) Поехали: Пункт меню Отчеты Какой-то прям колоссальный набор отчётов: Посещаемость, конверсии График переходов с сайтов, поисковых систем, поисковым фразам. Я даже нашел конкретных людей, кто оставил пост Вконтакте про мои статьи!!! Возраст, пол, интересы…
Криптопро поместить сертификат в реестр
Чтобы поместить сертификат КриптоПРО с флешки в реестр, нужно зайти в КриптоПро CSP -> вкладка Сервис: Нажать кнопку Скопировать. В открывшемся окне выбрать ключевой контейнер, нажав на кнопку Обзор… Вводим PIN-код от этого контейнера, нажимаем OK Придумываем имя нового контейнера, вводим его и жмём OK Выбираем Реестр, затем OK Устанавливаем пароль на новый контейнер Нажимаем OK и закрываем окно КриптоПро. Теперь нужно добавить сертификат в Континент-АП, для чего жмём правой кнопкой на значок в трее и выбираем Установить сертификат пользователя Выбираем только что созданный ключевой контейнер Вводим пароль от него На следующий вопрос отвечаем Да, автоматически, если не получится, то вручную указываем файл root.p7b
Поднятие криптошлюза на базе Континент-АП 3.6 и PfSense
Как-то нашей больнице понадобилось создать защищённое соединение с МИАЦ, да не просто подключить один компьютер на пару часов, а так чтобы были подключены все компьютеры сети всегда. Для решения этой задачи соседние больницы уже давно используют аппаратный криптошлюз версии 3.6 и вообще не парятся, но сейчас он снят с производства и его нигде не достать, а новая версия не совместима с версией 3.6. Предлагают единственный выход покупать на каждого пользователя отдельно КРИПТО-ПРО + Континент АП 3.6 и получать целую кучу сертификатов. Это совсем не дело и я решил попробовать расшарить соединение Континента-АП, установленного на одном компьютере, т.е. создать как-бы криптошлюз на базе Континент-АП 3.6. Вопреки некоторым сообщениям что это невозможно, не поддерживается и прочее, у меня всё-таки получилось. Делюсь: Имеем системный блок с установленной Windows XP. Устанавливаем КРИПТО-ПРО_3.6_R4, вводим заранее приобретенный лицензионный ключ. Устанавливаем Континент АП 3.6.19.47080 с межсетевым экраном. Установка защищённого канала связи с КГБУЗ «МИАЦ» МЗ ХК посредствам…