Jeszcze jeden blog o PHP

Radosne twórczości leniwego programisty PHP

SSH w Windows i komunikat „The server’s host key is not cached in the registry”

leave a comment »

Git

Git mimo utworzenia poprawnych kluczy, dodania ich do agenta (pageant.exe) i dodania klucza SSH w konfiguracji GitHub, przy próbie np.: klonowania projektu, wyświetla komunikat:


The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
Connection abandoned.
fatal: The remote end hung up unexpectedly

Ponieważ wszystko co należało zrobić – zostało zrobione, zaczęło się grzebanie i próbowanie wszystkiego co tylko mogło przyjść do głowy.

Dopiero po wykonaniu poniższego polecenia wszystko zaczęło działać jak należy:

plink.exe git@github.com

plink.exe instalowany jest np. z pakietem PuTTY.

Written by filipgorczynski

2014.10.18 at 21:28:32

Zmiana pierwszej litery na wielką z uwzględnieniem polskich znaków diakrytycznych

leave a comment »

PHPPrzykład prostej funkcji narzędziowej do zmiany pierwszej litery łańcucha znaków na wielką z uwzględnieniem polskich znaków diakrytycznych.

function ucfirst_utf8($str) {
    if (mb_check_encoding($str, 'UTF-8')) {       
        $first = mb_substr(mb_strtoupper($str, 'UTF-8'), 0, 1, 'UTF-8');       
        return $first . mb_substr(mb_strtolower($str, 'UTF-8'), 1, mb_strlen($str), 'UTF-8');   
    } else       
        return $str;
}

Przykład użycia:

var_dump(ucfirst('żółty żółw'));
var_dump(ucfirst('zażółć gęślą jaźń'));
var_dump(ucfirst_utf8('żółty żółw'));
var_dump(ucfirst_utf8('zażółć gęślą jaźń'));

oraz wynik działania:

string(16) "żółty żółw"
string(26) "Zażółć gęślą jaźń"
string(16) "Żółty żółw"
string(26) "Zażółć gęślą jaźń"

Written by filipgorczynski

2014.10.18 at 21:13:59

Napisane w PHP, Programowanie

Tagged with ,

Solr 4 w Windows 7 na Tomcat 8

leave a comment »

Apache SolrPoniżej przedstawiam czynności jakie musiałem wykonać w celu zainstalowania Solr4 w Windows 7 na serwerze Apache Tomcat 8.

1. Pobieramy wersję instalacyjną JDK8 odpowiednią dla naszego systemu operacyjnego (oczywiście o ile już jej wcześniej nie instalowaliśmy); dla mnie było to jdk-8u25-windows-x64.exe. Instalujemy jak każdą inną aplikację w Windows.

2. Pobieramy i instalujemy Apache Tomcat 8. Dla wygody można pobrać plik instalacyjny 32-bit/64-bit Windows Service Installer. Jako katalog instalacyjny dla Tomcat 8 wybrałem C:\dev\tomcat8.

3. Po zainstalowaniu możemy wejść w przeglądarce na adres http://localhost:8080/ w celu zweryfikowania poprawności instalacji (oczywiście określając odpowiedni port, którypodaliśmy w trakcie instalacji Tomcata). Powinniśmy zobaczyć ekran podobny do poniższego:

tomcat8

4. Zatrzymujemy usługę Tomcat: wybieramy Monitor Tomcat w menu programów Windows, w oknie klikamy przycisk Stop.

5. Ze strony domowej Solr pobieramy ostatnią wersję, ja wybrałem solr-4.10.1.zip.

6. Pobrany plik możemy rozpakować do C:\solr-4.10.1\; z tego katalogu będziemy potrzebowali tylko niewielką część.

7. Z lokalizacji C:\solr-4.10.1\dist\ kopiujemy plik solr-4.10.1.war do katalogu C:\dev\tomcat8\webapps\ oraz zmieniamy nazwę tego pliku – usuwamy numer wersji pozostawiając tylko solr.war.

8. Tworzymy nowy pusty katalog i uznajemy go za katalog domowy Solra – przykładowo C:\dev\solr.

9. Z katalogu C:\solr-4.10.1\example\solr\ kopiujemy wszystko do utworzonego przed chwilą katalogu C:\dev\solr – będziemy mieć tu m.in. katalogi bin oraz collection1.

10. Z katalogu C:\solr-4.10.1\example\lib\ext\ kopiujemy wszystkie pliki *.jar (ok 5 plików) do katalogu C:\dev\tomcat8\lib.

11. Ustawiamy wartość dla solr.solr.home. W okienku Monitor Tomcat; w zakładce Java w polu  Java Options dodajemy na końcu katalog domowy naszego Solra:

 

-Dsolr.solr.home=C:\dev\solr


12. W tym samym oknie przechodzimy do pierwszej zakładki, gdzie uruchamiamy usługę Tomcat 8 przyciskiem Start.

13. Tomcat dostępny jest pod adresem http://localhost:8080/. Solr natomiast jest dostępny pod adresem http://localhost:8080/solr/.

Solr4 Dashboard

Written by filipgorczynski

2014.10.18 at 18:28:28

Komunikaty (flash messages) w Symfony2

leave a comment »

Symfony logoPrzykładowy sposób wykorzystania komunikatów w Symfony.
W kontrolerze:
$success = 'Komunikat informujący o powodzeniu wykonanej operacji.';
$this->get('session')->getFlashBag()->add('success', $success);
$error = 'Komunikat informujący o niepowodzeniu wykonanej operacji.';
$this->get('session')->getFlashBag()->add('error', $error);
$warning = 'Komunikat informujący o ostrzeżeniu podczas wykonywanej operacji.';
$this->get('session')->getFlashBag()->add('warning', $warning);
$notice = 'Komunikat informujący o wykonanej operacji.';
$this->get('session')->getFlashBag()->add('notice', $notice);

W szablonie (Twig)

{# twig template #}
{% for type, flashMessages in app.session.flashbag.all() %}
{% for flashMessage in flashMessages %}
      <div class="{{ type }}">{{ flashMessage }}</div>
   {% endfor %}
{% endfor %}

Written by filipgorczynski

2014.09.17 at 20:45:46

Windows 7, Git, SSH agent – Could not open a connection to your authentication agent.

leave a comment »

GitPo zainstalowaniu Git, stworzeniu nowych kluczy prywatnego i publicznego oraz dodaniu ich do Bitbucketa, mimo wykonania polecenia:

git clone [url-repozytorium]

otrzymujemy komunikat:

Could not open a connection to your authentication agent.

W sieci znalazłem kilka propozycji rozwiązania problemu, ale większość działa jedynie na środowiskach nie Windowsowych i kończy się wykonaniem polecenia eval `ssh-agent`, które na Windowsie oczywiście nie działa.

Moja propozycja rozwiązania.
Pobieramy i instalujemy PuTTY, szczególnie będzie nas interesował PuTTY i Pageant. Jeśli już posiadamy zainstalowaną wersję PuTTY mogliśmy wykorzystywać PuTTYgen do stworzenia pary naszych kluczy.

Uruchamiamy PuTTY, w pole adresu wpisujemy bitbucket.org (lub github.com – w zależności od tego, który host nas interesuje), port zostawiamy domyślny, możemy zaznaczyć opcję, aby nie zamykał okienka, ale to raczej nie ma wielkiego znaczenia.
Próbujemy się połączyć z tym hostem, przed połączeniem poprosi nas o potwierdzenie, czy klucz danego hosta ma zostać dodany do zaufanych. Klikamy TAK. I tutaj już za wiele nam nie będzie potrzebne więc można wszystko pozamykać.
Uruchamiamy Pageant i ładujemy do niego nasz klucz – plik *.ppk, znajdujący się przykładowo w ~/.ssh/id_rsa.ppk).

Po załadowaniu klucza do Pageant powinniśmy już bezproblemowo móc wykonać wszelakie operacje na repozytorium: push, pull, itd.

Written by filipgorczynski

2014.09.17 at 20:14:35

Odtwarzanie tabeli InnoDB

leave a comment »

MySQL logoW kilku projektach zdarzyło mi się z bliżej nieokreślonych powodów podczas próby czyszczenia cache w Drupalu wystąpienie błędu MySQL w postaci:

mysql> show tables;
+--------------------------------------+
| Tables_in_drupal7demo                |
+--------------------------------------+
| ...                                  |
| cache_apachesolr                     |
| ...                                  |
+--------------------------------------+
108 rows in set (0.00 sec)
mysql> TRUNCATE `cache_apachesolr`;
ERROR 1146 (42S02): Table 'drupal7demo.cache_solr' doesn't exist

Mogło to być spowodowane wykonaniem polecenia TRUNCATE `cache_apachesolr` i sposobem w jaki w rzeczywistości wykonywane jest polecenie TRUNCATE.

Jednym z najprostszych rozwiązań jakie udało mi się znaleźć jest odtworzenie struktury tabeli, a ponieważ praktycznie każda próba odczytu/zapisu z/do tabeli zwróci komunikat błędu (np.: ERROR 1030 (HY000): Got error -1 from storage engine) musimy dodać jeszcze jedno polecenie w ostateczności wykonując poniższe polecenia:

ALTER TABLE `cache_apachesolr` DISCARD TABLESPACE;
DROP TABLE IF EXISTS `cache_apachesolr`;
CREATE TABLE `cache_apachesolr` (
`cid` varchar(255) NOT NULL DEFAULT '' COMMENT 'Primary Key: Unique cache ID.',
`data` longblob COMMENT 'A collection of data to cache.',
`expire` int(11) NOT NULL DEFAULT '0' COMMENT 'A Unix timestamp indicating when the cache entry should expire, or 0 for never.',
`created` int(11) NOT NULL DEFAULT '0' COMMENT 'A Unix timestamp indicating when the cache entry was created.',
`serialized` smallint(6) NOT NULL DEFAULT '0' COMMENT 'A flag to indicate whether content is serialized (1) or not (0).',
PRIMARY KEY (`cid`),
KEY `expire` (`expire`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Cache table for apachesolr to store Luke data and...';

Potencjalne przyczyny problemu: http://dba.stackexchange.com/a/6269

Źródło rozwiązania: http://www.palominodb.com/blog/2011/11/02/how-recreate-innodb-table-after-tablespace-has-been-removed

Kilka innych pomysłów, które można wypróbować by odzyskać tabele: http://www.chriscalender.com/?tag=innodb-error-tablespace-id-in-file

Written by filipgorczynski

2014.01.11 at 06:04:13

Chrome – problem z wczytywaniem zasobów (obrazków, CSS)

with one comment

Chrome IconKilka instalacji temu pojawiła się w Google Chrome dziwna przypadłość, że nie zawsze wczytuje zasoby, a pomaga dopiero kilkukrotne odświeżenie strony. Proponowane rozwiązania to m. in.: włączenie trybu incognito, czyszczenie cache całego Chrome’a, zmiany w konfiguracji związane z pobieraniem treści stron „na zapas” (przewidywanie?), wyłączanie rozszerzeń, wszelakie kombinacje z ustawieniami proxy, z ustawieniami firewall i antywirusa, ponowne uruchamianie komputera w „safe mode”, reinstalacje sterowników i wiele innych.

W chwili obecnej problem udało się rozwiązać w 2 przypadkach, a jedyne co trzeba było zrobić to:

1. Pobrać aktualną wersję pliku instalacyjnego Google Chrome: klikamy „Pobierz Chrome”.

chromefix_step_12. Udajemy, że akceptujemy klikając „Zaakceptuj i zainstaluj”.

chromefix_step_2

3. Następnie proces ten przerywamy i zamykamy okienko instalacji.

chromefix_step_34. Klikamy „kliknij  tutaj, by spróbować ponownie”.

chromefix_step_45. Będziemy mogli dzięki temu pobrać plik ChromeSetup.exe bezpośrednio – bez uruchamiania automagicznej instalacji.

chromefix_step_56. Gdy już pobierzemy plik na dysk, klikamy na niego prawym przyciskiem myszy, otwieramy okienko „Właściwości” i klikamy „Odblokuj” (prawdę mówiąc, nie wiem dokładnie jakie ma to znaczenie dla systemu operacyjnego :) ). Klikamy OK.

chromefix_step_67. Ostatni krok, prawym przyciskiem myszy klikamy na pliku i wybieramy opcję „Uruchom jako administrator”.

chromefix_step_78. Ostatni krok to najzwyklejsze klikanie dalej podczas instalacji.

Written by filipgorczynski

2013.11.28 at 18:52:32

Obserwuj

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.

Dołącz do 248 obserwujących.

%d bloggers like this: