coolwolf / 24/10/2012

TFS 2012 Project Creation Error

If you receive the following erro when trying to create a project on Team foundation Server 2012 :

Error
TF30170: The plugin Microsoft.ProjectCreationWizard.Build failed during task BuildTask from group Build.
Explanation
Plugin error text: “TF203013: The path C:\Windows\SERVIC~2\LOCALS~1\AppData\Local\Temp\tmpBF13.tmp is in the DOS (8.3) short path format and is not supported. Enter a full path to the item and try again.”
User Action
Contact your Team Foundation Server administrator.

 
First create a new user with administrator privileges. Then  open Team Foundation Administration Console and change the account. It will solve your problem.

coolwolf / 15/10/2012

CollabNET Subversion Edge installation problem

I tried to install 64 bit version of Subversion Edge and i receive the message below :

2012-10-15 17:16:34.691:INFO::jetty-7.0.2.v20100331
2012-10-15 17:16:34.738:INFO::Deployment monitor D:\csvn\appserver\contexts at interval 300
2012-10-15 17:16:34.753:INFO::Deployable added: D:\csvn\appserver\contexts\csvn.xml
2012-10-15 17:16:34.800:WARN::Config error at <Set name="initParams">| <Map><Entry>
Item>org.eclipse.jetty.servlet.SessionCookie</Item><Item>SESSID</Item></Entry><Entry><Item>org.eclipse.jetty.servlet.SessionIdPathParameterName</Item><Item>none</Item></Entry></Map>| </Set> java.lang.NoSuchMethodException: class org.eclipse.jetty.webapp.WebAppContext.setİnitParams(class java.util.HashMap)
2012-10-15 17:16:34.800:WARN::Unable to reach node goal: started
java.lang.NoSuchMethodException: class org.eclipse.jetty.webapp.WebAppContext.setİnitParams(class java.util.HashMap)
at org.eclipse.jetty.xml.XmlConfiguration.set(XmlConfiguration.java:455)
at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:254)
at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:220)
at org.eclipse.jetty.deploy.providers.ContextProvider.createContextHandler(ContextProvider.java:72)
at org.eclipse.jetty.deploy.App.getContextHandler(App.java:109)
at org.eclipse.jetty.deploy.bindings.StandardDeployer.processBinding(StandardDeployer.java:33)
at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:182)
at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:498)
at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:136)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:61)
at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:437)
at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:350)
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:306)
at org.eclipse.jetty.util.Scanner.start(Scanner.java:242)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:136)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:563)
at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:213)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
at org.eclipse.jetty.server.Server.doStart(Server.java:207)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1021)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:986)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.jetty.start.Main.invokeMain(Main.java:394)
at org.eclipse.jetty.start.Main.start(Main.java:546)
at org.eclipse.jetty.start.Main.parseCommandLine(Main.java:208)
at org.eclipse.jetty.start.Main.main(Main.java:75)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.rzo.yajsw.app.WrapperJVMMain.executeMain(WrapperJVMMain.java:53)
at org.rzo.yajsw.app.WrapperJVMMain.main(WrapperJVMMain.java:36)
2012-10-15 17:16:34.800:INFO::Deployable added: D:\csvn\appserver\contexts\redirect.xml
2012-10-15 17:16:34.831:INFO::Deployable added: D:\csvn\appserver\contexts\integration.xml
2012-10-15 17:16:34.925:INFO::Extract jar:file:/D:/csvn/appserver/webapps/integration.war!/ to C:\Windows\Temp\Jetty_0_0_0_0_3343_integration.war__integration__gzh5bq\webapp
2012-10-15 17:16:36,859 INFO [main] com.vasoftware.sf.externalintegration.BootstrapServlet: Bootstrapping the Integration service for Subversion Edge at D:\csvn
2012-10-15 17:16:37,187 WARN [main] org.apache.axis.utils.JavaUtils: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
2012-10-15 17:16:37.358:INFO::Deployment monitor D:\csvn\appserver\webapps at interval 300
2012-10-15 17:16:37.421:INFO::Opened D:\csvn\data\logs\jetty_2012_10_15.log
2012-10-15 17:16:37.483:INFO::Started SelectChannelConnector@0.0.0.0:3343
2012-10-15 17:16:38.294:INFO::Started SslSelectChannelConnector@0.0.0.0:4434

this error message is located in D:\csvn\data\logs\console_2012_10_15.log
I tried several things to solve this. But no success. I am going to try to install 32 bit version of Subversion Edge.
i see the exact same error with 32 bit installation. After i see something in the error message. There is a line like this:

class org.eclipse.jetty.webapp.WebAppContext.setİnitParams

I dont know why and how but the java system looks for

setİnitParams

.
The letter
İ
is only in Turkish alphabet. I will try found from where is coming this.
No success. I am going to setup Rocket svn. If it fails i will go back to übersvn
EDIT october 29 2012 :
I see 3.2.0 version of Subversion Edge is released. Then i try to install it again.
But the error is the same. Then i decide to look for the solution again.
Because  i think this error comes from my Turkish regional settings. Before the error starts there was a line like this :
2012-10-29 15:42:23.303:INFO::Deployable added: D:\csvn\appserver\contexts\csvn.xml
So the solution is :
Open this file D:\csvn\appserver\contexts\csvn.xml and change
<Set name="initParams">
to
<Set name="InitParams">
After that restart the Subversion Edge service. It will run correctly now.

coolwolf / 15/10/2012

Visual SVN Install problem

I was using übersvn over years. It is very easy to use. But i can not manage the ram usage of tomcat with übersvn. After that i decided to change my svn server. We are just 2 developers. It is easy for us to change something. Also this is why 1.5GB of memory usage is not normal for me. My server has just 4GB i dont want to share its 1.5GB with svn server. SVN server is used just a few times in a day.
So i firstly tried to install VisualSVN several times. But i always receive this error :
The VisualSVN Server service terminated with service-specific error Incorrect function
I tried to play with httpd.conf file. And other things. But not, it is not starting.

Now, i will try to install ColabNet’s Subversion Edge…

My Server is :
Windows Web Server 2008 R2 64bit,
I have 4GB of Ram,
at least 300GB of free space…

coolwolf / 08/10/2012

Server 2008 Çok yavaş kapanıyor / Server 2008 is shutting down very slow

[For English Click Here]
Eğer aynı makinada Exchange 2007 kuruluysa önce exchange servislerini kapatmak işi çözüyor.
Alttaki komutları c:\Windows\ExchClose.cmd dosyasına kaydedin

net stop msexchangeadtopology /y
net stop msftesql-exchange /y
net stop msexchangeis /y
net stop msexchangesa /y
net stop iisadmin /y

Ardından Başlat -> Yönetimsel Araçlar -> Grup İlkesi Yönetimi ‘ni açınız.
Domain Controllers altındaki Default Domain Controllers Policy
seçeneğine sağ tıklayıp Düzenle... seçeneğini tıklayınız.
Buradan Bilgisayar Yapılandırması -> İlkeler -> Windows Ayarları -> Komut Dosyaları (Başlangıç/Kapatma) seçeneğini tıkladığınızda sağda çıkan Kapat seçeneğini çift tıklayın.
Ekle butonuna basıp, gözat butonu ile daha önce kaydettiğimiz dosyayı buluyoruz.
Ardından Tamam Tamam tıklayarak işlemi tamamlıyoruz.
Server’ı kapatıp açtığınızda öncekinden çok daha hızlı kapandığını göreceksiniz.

English :
If you have Exchange 2007 installed on the same server, closing exchange services gives you the resolution.  Create a file named c:\Windows\ExchClose.cmd and put the commands below into this file :

net stop msexchangeadtopology /y
net stop msftesql-exchange /y
net stop msexchangeis /y
net stop msexchangesa /y
net stop iisadmin /y

Then click and open Start -> Administrative Tools -> Group Policy Management.
Under Domain Controllers find Default Domain Controllers Policy and right click on it.
Then choose Edit... option.
From here choose Computer Management -> Policies -> Windows Settings -> Command Files (Start/Stop) option.
You will see  Close on the right. Double click on it.
Then click Add button, click Browse and find the file you created.
Then click OK double times. And its done.
When you restart your server it will be closed more faster than previous.

coolwolf / 02/10/2012

Windows XP Bilgisayar’dan Windows 7 sunucuya bağlantı

Windows 7’li bilgisayarınızı sunucu yapmak ve bu sunucuya Windows XP çalıştıran bilgisayarlardan bağlanmak istiyorsanız aşağıdaki registry anahtarlarına ilgili değerleri giriniz.
Alttaki anahtarın değerini 1 yapınız :
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\LargeSystemCache
Alttaki anahtarın değerini de 3 olarak değiştiriniz :
HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Size

coolwolf / 08/06/2012

sqlite türkçe harf sıralaması, sqlite turkish collation

Kullandığım projelerde ACCESS yerine SQLite kullanmayı uzun zamandır düşünüyordum. Fakat SQLite altında sorgu yaptığımda harfleri Türkçe sıralayamıyordu.
Bu sorunu çözmek için önce SQLite ve ICU bileşenlerini kendim derlemeyi denedim. Fakat C bilgim olmadığı için bu konuda başarılı olamadım.
Ardından yılmadım ve denemelerime devam ettim.
En sonunda bu adresteki kodu kullanarak sorunumu çözebildim.
Namespace’imizin içinde bir yere şu satırları ekliyoruz:

[SQLiteFunction(FuncType = FunctionType.Collation, Name = "UTF8CI")]
    public class SQLiteCaseInsensitiveCollation : SQLiteFunction
    {
        private static readonly System.Globalization.CultureInfo _cultureInfo = System.Globalization.CultureInfo.CreateSpecificCulture("tr-TR");
        public override int Compare(string x, string y)
        {
            return string.Compare(x, y, _cultureInfo, System.Globalization.CompareOptions.IgnoreCase);
        }
    }

Şimdi bu fonksiyonu kullanabilmemiz için Program.cs dosyamızdaki Main() fonksiyonunun içine şu satırı ekliyoruz:

System.Data.SQLite.SQLiteFunction.RegisterFunction(typeof(SQLiteCaseInsensitiveCollation));

Eğer tabloları herhangi bir SQLite Yönetim programıyla oluşturduysanız Türkçe sıralama yine çalışmayacaktır.
İsterseniz buradaki derme çatma programı kullanarak da SQLite veritabanınızı yönetebilirsiniz.
Tabloları kendimiz program içinde oluşturmalıyız. SQL konusunda iyi değilseniz SQLite yönetim programlarını herhangi biriyle oluşturduğunuz tabloyu EXPORT ederek SQL kodlarını elde edebilirsiniz.
Burada sıralama yapacağınız (ORDER BY) FIELD’ların oluşturma koduna COLLATE UTF8CI kelimelerini ekliyoruz:

CREATE TABLE `tablom` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
`adi` TEXT NULL COLLATE UTF8CI,
`soyadi` TEXT)

Bundan sonra yapacağınız insert ve select sorgularında sıralama Türkçe oalcaktır.
Eğer

No such collation: UTF8CI

şeklinde hata alırsanız select sorgusunun sonuna COLLATE BINARY kelimelerini ekleyin :

select * from tablom order by adi COLLATE BINARY

İyi kodlamalar.

coolwolf / 14/12/2010

komut satırından dosya hakkı düzenlemek

Komut satırı kullanarak bir klasör veya dosyanın haklarında değişikik yapmak için aşağıdaki iki komutu kullanabilirsiniz.
takeown /f klasoradi /r /d y
icacls klasoradi /grant administrators:F /t
How to change folder or file permissions from command prompt: 
takeown /f foldername /r /d y icacls foldername /grant administrators:F /t

coolwolf / 01/12/2010

PHP 3. String ve Matematiksel İşlemler

3. dersimizde PHP ile string işlemleri ve matematiksel işlemler yapmayı öğreneceğiz.
İlk olarak matematiksel işleme bir örnek verelim.
round (yuvarla) komutu :
round komutu ile virgülden sonraki rakkamları yuvarlıyoruz yada en yakın tamsayıya tamamlıyoruz.
Örnekler:

echo round(45.4);         // 45
echo round(45.5);         // 46
echo round(45.6);         // 46
echo round(45.6, 0);      // 46
echo round(32.268759, 2);  // 32.27
echo round(1425879, -3); // 1425000
echo round(32.0268, 3);    // 32.027
echo round(32.055, 2);    // 32.06

Diğer matematiksel işlem fonksyonları için http://www.php.net/manual/en/ref.math.php adresine bakabilirsiniz.
PHP içerisinde toplama,çıkarma,bölme ve çarpma operatörleri aşağıdaki gibidir:
Toplama:

<?php
$ilksayi=45;
$ikincisayi=22;
$toplam=$ilksayi+$ikincisayi;  //67
?>

Çıkarma:

<?php
$ilksayi=45;
$ikincisayi=22;
$toplam=$ilksayi-$ikincisayi;  //23
?>

Bölme:

<?php
$ilksayi=45;
$ikincisayi=22;
$toplam=$ilksayi/$ikincisayi;  //2.0454545454545
?>

Çarpma:

<?php
$ilksayi=45;
$ikincisayi=22;
$toplam=$ilksayi*$ikincisayi;  //990
?>

String işlemleri:
http://www.php.net/manual/en/ref.strings.php linkine tıklayarak tüm string işleme fonksiyonlarına ulaşabilirsiniz.
Biz çok kullanılan birkaç fonksiyondan örnek verelim.
md5() komutu verdiğimiz bir string’i md5 şifrelenmiş hale dönüştürür.
Örnek:

<?php
$metin="Merhaba Dunya";
echo md5($metin);
?>

str_replace() komutu bir string içerisinde aradığınız değeri bulur ve vereceğiniz değer ile değiştirir.
str_replace ($bunu_ara,$bununla_degistir,$bunun_icinde)
Örnek:

<?php
$bunun_icinde="Merhaba Dunya";
$bunu_ara="er";
$bununla_degistir="$";
echo str_replace($bunu_ara,$bununla_degistir,$bunun_icinde);
?>

strlen() komutu verilen string’in kaç karakter içerdiğini sayar.
Örnek:

<?php
$metin="Merhaba Dunya";
echo strlen($metin);  //13
?>

strpos() komutu verilen string’in içerisinde verilen karakter’in ilk oalrak kaçıncı sırada olduğunu verir.
Örnek:

<?php
$metin="Merhaba Dunya";
$bul="a";
echo strpos($metin,$bul);  //4
?>

substr() komutu verilen string’in içerisinden belli bir bölümü alır.
Örnek:

<?php
$metin="Merhaba Dunya";
echo substr($metin,2,6);  //rhaba
echo substr($metin,2);  //rhaba Dunya
?>

Yukarıda birkaç string işleme fonksiyonu örneği verdik. Bir sonraki dersimiz veritabanı bağlantıları ile ilgili oldukça uzun bir ders olacak.

coolwolf / 01/12/2010

PHP 2. İlk komutumuzu yazalım

Bir önceki makalede php çalıştırmak için gerekli olan araçları kurduk. Şimdi ilk php sayfamızı çalıştıralım ve sonucu görelim.
Öncelikle şunları hatırlatalım:
PHP sayflaraının uzantısı .php olmalıdır. (Tabi ki bu uzantıyı değiştirmek mümkün. Fakat biz genel geçer kurallar üzerinde konuşalım.)
.php uzantılı olmayan dosyalardaki php kodları aynen olduğu gibi web tarayıcısına gönderilecektir. Haliyle bunlar işlem görmeyecek hatta son kullanıcı tarafından görülebilecektir.
.php uzantılı dosyalar aslında HTML formatında dosyalardır. Yani <html> tag’ı ile başlar </html> tagı ile biterler. Bunların farkı araya php kodları yazıyor olmamızdır.
PHP kodları HTML kodu içerisinde <?php blablakod ?> şeklinde yazılırlar. <?php ?> tagları arasında yazılmayan kodlar yine işlem görmeyecektir.
Biz kendi yerel sunucumuzda çalışıyoruz. İstersek php.ini dosyasından tüm hataları görünür yapabiliriz. Fakat yine de alışkanlık haline getirelim ve hata kontrolü (debug) yapmak sitediğimiz sayfaların başına error_reporting(E_ALL); kodunu yazalım ki oluşabilecek hataları ekranda görelim. Peki bu hataları her zaman neden görüntülemiyoruz diye sorabilirsiniz. Mesele şu ki eğer tüm hata mesajlarınızı görüntülerseniz kodlarınız ve sisteminiz hakkında birçok bilgiyi kötü niyetli kişilere kolayca verebilirsiniz.
PHP yapı oalrak C dili ile benzerlik göstermektedir. Bu benzerliklerden biri de tüm satırlar ; (noktalı virgül) ile bitmelidir.
Şimdilik aklıma gelen önemli noktalar bu kadar. Hadi ilk kodumuzu yazalım.
<?php echo ‘merhaba dünya’; ?> Bu kodu index.php isimli bir dosyaya kaydedelim ve webroot dizinimize koyalım. Bir önceki makalede de anlattığımız gibi WampServer için bu root dizini “c:\wamp\www” dizinidir. Yani biz index.php dosyamızı buraya koyacağız. Sonra da tarayıcımızın adres satırına http://localhost yazacağız.
Eğer herşey yolunda gitmişse sayfanın sol üst köşesinde merhaba dünya yazısını görmemiz gerekiyor. Görmüyorsak bundan önce izlediğimiz adımları kontrol etmekte fayda var.
Eğer daha önce normal bir programlama dili kullandıysanız temel olarak giriş ve çıkış komutları olduğunu zaten biliyorsunuz. Yani writeln, readln, scanf, printf, readkey, print gibi komutlarla ekrana yazı yazdırdık ve klavyeden giriş aldık. (Tabi bu bahsettiklerim visual olmayan diller)
PHP’de echo yad aprint komutuyla ekrana bilgi yazdırıyoruz. Klavyeden birşeyler okumak için ise genellikle HTML FORM kullanıyoruz. Bir örnekle açıklayalım:

<?php
if(isset($_POST['adi']) && isset($_POST['soyadi']))
{
echo 'Sorgu çalıştı <br>';
echo $_POST['adi'].' '.$_POST['soyadi'];
}
?>
<html>
<head><title>PHP Öğreniyorum</title></head>
<body>
<form name="form1" action="_self" method="POST">
<input name="adi" type="text" size="25" maxlenght="25">
<input name="soyadi" type="text" size="25" maxlenght="25">
<input type="submit" name="button" value="Tamam">
</form>
</body>
</html>

Yukarıda kırmızı ile yazılan kısım sayfanın php derleyicisi tarafından işlenecek kısmı. Mavi ile yazılı olan kısım ise doğrudan tarayıcıya gönderilecek kısım.
İlk satırda bir sorgu çalıştırdık ve POST metodu ile sayfaya gönderilen “adi” ve “soyadi” değişkenlerinin bir değere set edilip edilmediklerini kontrol ettik. isset komutu herhangi bir değişkenin set edip edilmediğini yani bir değer içerip içermediğini kontrol eder. Fakat şunu hatırlatmakta yarar var. Eğer “adi” değişkeninin değeri “” (boş karakter), ” ” (boşluk), “0” (sıfır) gibi değerlere set edilmişse bile isset sorgusu 1 (True) olarak dönecektir. Burada kontrol edilen değişkenin içeriği değil kendisinin bellekte yer alıp almamış olmasıdır.
Biz IF sorgumuzda hem “adi” hem de “soyadi” değişkenlerinin set edilmiş olmasını istedik. Bu durumda sayfayı ilk açtığımızda karşımıza herhangi bir yazı çıkmayacak çünkü bu iki değişkeni set etmedik.
Sayfanın mavi ile yazılmış kısmıda ise basit bir HTML sayfası ve içinde de bir FORM yer almaktadır. Bu form’un adı “form1”, içeriğini göndereceği yer “_self” (yani kendisi. Buraya islemler.php yazsaydım tamam butonuna bstığımda değerleri islemler.php sayfasına gönderecekti), gönderme metodu “POST” olarak belirlenmiştir. Formun içinde her ikisinin de görülebilir ve kullanılabilir karakter giriş sayısı 25 olmak üzere bir “adi” diğeri “soyadi” isminde iki adet TEXT FIELD’ımız var. Son olarak da formu ACTION’da tanımlanan hedefe göndermesi için SUBMIT butonumuz var.
Tamam (Submit) butonuna bastığımızda artık “$_POST[‘adi’]” ve “$_POST[‘soyadi’]” değişkenleri bir değere sahipler. Biz bunları boş bırakıp gönder butonuna bassak bile bu iki değişken artık boş da olsa bir değere sahipler. Bu nedenle sorgu çalışacak ve “adi” “soyadi” değişkenlerini ekrana yazacaktır (boş olsalar bile.)
Sonra tekrar forma birşey yazıp “Tamam” butonuna bastığımızda bu sefer de yeni yazdıklarımız üstte gözükecektir.
Böylece klavyeden birşeyler girdik ve bunları sayfada yazdırdık. Bundan sonraki konuda birkaç matematik işlem ile stringler üzerinde birkaç deneme yapacağız. Ondan sonra da veritabanına birşeyler yazıp okumayı deneyeceğiz.
Herkese iyi çalışmalar
Bölüm 3 ->