dapatkan jalur skrip saat ini ketika dijalankan melalui symlink
<p>saya memiliki utilitas yang terdiri dari beberapa direktori dengan beberapa skrip bash dan file pendukung yang akan digunakan untuk beberapa mesin di direktori yang berbeda di setiap mesin. script harus dapat mereferensikan path relatif ke diri mereka sendiri jadi saya harus bisa mendapatkan path ke file yang saat ini sedang dieksekusi.</p><p>saya sadar akan <code>dirname $0</code> idiom yang bekerja dengan sempurna ketika skrip saya dipanggil langsung. sayangnya ada keinginan untuk dapat membuat symlink ke skrip ini dari direktori yang sama sekali berbeda dan masih memiliki pekerjaan logika pathing relatif.</p><p>contoh dari keseluruhan struktur driectory adalah sebagai berikut:</p><pre><code>/ |-usr/local/lib | |-foo | | |-bin | | | |-script.sh | | |-res | | | |-resource\_file.txt |-home/mike/bin | |-link\_to\_script (symlink to /usr/local/lib/foo/bin/script.sh) </code></pre><p>bagaimana saya bisa dengan andal mereferensikan <code>/usr/local/lib/foo/res/resource\_file.txt</code> dari <code>script.sh</code> apakah itu dipanggil oleh <code>/usr/local/lib/foo/bin/script.sh</code> atau <code>~mike/bin/link\_to\_script</code>?</p>
<p>coba ini sebagai solusi tujuan umum:</p><pre class="lang-none prettyprint-override"><code>dir="$(cd "$(dirname "$0")" &amp;&amp; pwd)" </code></pre><p>dalam kasus spesifik symlink berikut, anda juga bisa melakukan ini:</p><pre class="lang-none prettyprint-override"><code>dir="$(dirname "$(readlink -f "$0")")" </code></pre>
<p>dari baris perintah linux</p><pre><code>for proc\_to\_kill in `mysql -h... -u... -p... -a --skip-column-names -e"show processlist" | grep -v "system user" | awk '{print $1}'` ; do mysql -h... -u... -p... -a --skip-column-names -e"kill query ${proc\_to\_kill}" ; done </code></pre><p>anda bisa mengubah opsi grep di header loop for untuk menemukan pengguna tertentu atau string tertentu dalam kueri.</p><p>jika anda memiliki mysql 5.1 di mana daftar proses ada di information\_schema, anda bisa melakukan ini untuk menghasilkan perintah kill query dalam jumlah besar dari dalam klien mysql:</p><pre><code>select group\_concat(concat('kill query ',id,';') separator ' ') killquery from information\_schema.processlist where user&lt;&gt;'system user'\g </code></pre><p>anda bisa melakukan klausa where terhadap bidang info untuk mencari kueri tertentu, bidang time terhadap kueri yang sudah berjalan lama, atau bidang db terhadap database tertentu.</p> <p>jawaban ini sudah tua, tetapi sepertinya masih mendapatkan traffic. seperti disebutkan di bawah, ada alat bawaan di windows sekarang:</p><p>mulai → semua program → aksesori → alat sistem → monitor sumber daya (atau jalankan resmon.exe)</p><p>anda bisa mendapatkan info lebih lanjut di jawaban di bawah ini. sisa jawaban ini tidak lagi relevan.</p><hr><p> <a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx">process explorer</a> dari sysinternals akan memungkinkan anda mencari melalui pegangan dan dll. cari direktori dan cari tahu proses mana yang "menggunakan" folder tersebut.</p><p>dari sana, anda memiliki kemampuan untuk mematikan proses itu, atau hanya menutup pegangan file tertentu. pastikan apa yang anda lakukan saat menangani file ditangani secara langsung, dan pastikan itu tidak digunakan oleh beberapa proses penting.</p> <p>pendekatan yang paling banyak digunakan yang pernah saya lihat adalah menggunakan ellipsis untuk menunjukkan bahwa ada lebih banyak teks, seperti ini:</p><p><img src="https://i.stack.imgur.com/o0usc.png" alt="alt text"></p><p>anda kemudian dapat memberikan tooltip saat mengarahkan kursor untuk menunjukkan nama lengkap kepada pengguna. pada mac os, apple mencoba untuk menyingkat teks sebagai langkah pertama. mereka melakukannya dengan mengurangi jarak antara huruf dan kata. idenya adalah untuk menunjukkan kepada anda sebanyak mungkin karakter sebelum menambahkan ellipsis sebagai pilihan terakhir.</p><p>saya telah melihat pendekatan lain yang jauh lebih elegan dalam aplikasi di suatu tempat di mana mereka memudar huruf terakhir yang dapat ditampilkan. saya tidak dapat mengingat nama aplikasi, tetapi tampilannya seperti ini:</p><p><img src="https://i.stack.imgur.com/lc3jv.png" alt="alt text"></p><p>ini jelas lebih banyak pekerjaan, tetapi jelas terlihat lebih modern dan berkelas. saya terkejut bahwa ini belum menjadi fitur standar mac os. omong-omong, apple <em>tidak</em> menggunakan fading di spotlight untuk menunjukkan kepada anda path file yang panjang:</p><p><img src="https://i.stack.imgur.com/cr1nu.png" alt="alt text"></p><p>selain path file yang pudar, lihat file "yllistenerbase.cpp": anda dapat melihat bahwa file itu terkondensasi jika anda membandingkannya dengan file .h-nya. jalur file dengan efek fading ada di bagian bawah jendela.</p> Upload File kotak adalah di mana kita're saat ini jika anda don't ingin melibatkan teknologi lainnya seperti Flash, Java atau ActiveX.


Dengan HTML anda cukup banyak terbatas pada pengalaman anda've dijelaskan (tidak ada progress bar, double menyampaikan, dll). Jika anda bersedia untuk menggunakan beberapa javascript, anda dapat memecahkan beberapa masalah dengan memberikan umpan balik yang upload sedang berlangsung dan bahkan [menunjukkan kemajuan upload](http://www.raditha.com/php/progress.php) (ini adalah hack karena anda tidak't harus melakukan full round-trip ke server dan kembali, tapi setidaknya ia bekerja).


Jika anda bersedia untuk menggunakan Flash (yang tersedia cukup banyak di mana saja dan pada banyak platform), anda dapat mengatasi hampir semua masalah ini. Cepat googling muncul [dua](http://www.downloadsquad.com/2006/11/16/swfupload-open-source-flash-multi-file-upload/) [seperti](http://www.codeproject.com/KB/aspnet/FlashUpload.aspx) komponen, keduanya gratis *dan* open source. Saya tidak pernah menggunakan salah satu dari mereka, tapi mereka terlihat baik. BTW, Flash isn't tanpa masalah yang baik, misalnya ketika menggunakan multi-file uploader untuk slide share, browser yang terus-menerus menerjang pada saya :-(


Mungkin solusi terbaik saat ini adalah untuk mendeteksi secara dinamis jika pengguna memiliki Flash, dan jika itu's kasus, memberikan versi flash uploader, sementara masih membuat itu mungkin untuk memilih HTML dasar satu.


HTH kalimat langsung adalah kalimat yang diucapkan secara langsung kepada orang yang dituju. kalimat langsung memiliki ciri-ciri sebagai berikut:


 pada kalimat langsung, kalimat petikan di tandai dengan tanda petik dua ("...").
 huruf pertama setelah tanda petik berupa huruf kapital dan diakhiri dengan tanda baca sesuai jenis kalimatnya (contohnya kalimat berita, maka diakhiri dengan tanda titik, atau apabila kalimat tanya, maka diakhir dengan tanda tanya).
 kalimat petikan dan kalimat pengiring dipisahkan dengan baca (,) koma.
 kalimat langsung yang berupa dialog berurutan, harus menggunakan tanda baca titik dua (:) di depan kalimat langsung.
 pola susunan:
 pengiring, “kutipan”
 “kutipan,” pengiring
 “kutipan,” pengiring, “kutipan”
 cara membaca pada kalimat kutipan intonasinya sedikit ditekan.


maka kalimat langsung yang tepat adalah pada kalimat "mengapa engkau menangis, cinderella", sebuah suara lembut berbisik. kalimat tersebut langsung ditujukan kepada cinderella, dengan pola susunan “kutipan,” pengiring.

dengan demikian, jawaban yang tepat adalah pilihan d. <p>jalankan <code>app/console --version</code> (untuk symfony3: <code>bin/console --version</code>), itu akan memberi anda ide yang cukup bagus. pada proyek acak saya, hasilnya adalah:</p><pre><code>symfony version 2.2.0-dev - app/dev/debug </code></pre><p>jika anda tidak dapat mengakses konsol, coba baca <code>symfony/src/symfony/component/httpkernel/kernel.php</code>, di mana versinya <a href="https://github.com/symfony/symfony/blob/master/src/symfony/component/httpkernel/kernel.php#l62">hardcoded</a> , misalnya:</p><pre><code>const version = '2.2.0'; </code></pre><p>untuk berjaga-jaga jika anda bertanya-tanya, <code>console</code> membuat turunan <code>symfony\bundle\frameworkbundle\console\application</code>. dalam konstruktor kelas ini, ia menggunakan <code>symfony\component\httpkernel\kernel::version</code> untuk menginisialisasi konstruktor induknya. </p> <p>statistik hanyalah bentuk metadata dinamis yang membantu pengoptimal kueri dalam membuat keputusan yang lebih baik. misalnya, jika hanya ada selusin baris dalam sebuah tabel, maka tidak ada gunanya pergi ke indeks untuk melakukan pencarian; anda akan selalu lebih baik melakukan pemindaian tabel penuh. tetapi jika tabel yang sama tumbuh hingga sejuta baris, maka anda mungkin akan lebih baik menggunakan indeks. tetapi jika anda kueri tabel itu pada kolom yang hanya memiliki sedikit nilai unik (misalnya itu mungkin kolom "jenis kelamin" yang hanya berisi "m" atau "f"), sebenarnya fts mungkin lebih baik daripada kasus itu karena anda ingin perlu mengambil blok pula untuk membangun set hasil. sekarang katakanlah meja anda adalah 99% "m" dan hanya 1% "f", kita harus fts dalam satu kasus atau menggunakan indeks dalam yang lain. tabel yang sama, permintaan yang sama, berpotensi empat paket permintaan yang berbeda tergantung pada isi tabel. hal-hal semacam ini adalah "statistik" dan bersifat individual untuk setiap basis data - bahkan dua basis data dengan tabel dan struktur indeks yang sama akan memiliki statistik yang berbeda.</p><p>singkatnya, dalam mesin basis data modern ada dua jenis optimisasi kueri: menulis ulang sql (optimasi berbasis aturan, seperti kompiler menulis ulang c anda agar lebih efisien) dan memilih jalur data yang tepat (optimasi berbasis biaya) , seperti kompiler jit yang mengidentifikasi hotspot saat runtime). anda hanya perlu khawatir tentang ini jika anda melihat pengoptimal kueri melakukan sesuatu yang jelas salah (mis. memilih fts saat anda <em>tah</em> indeks akan lebih baik).</p> <pre><code>select id, name, score, find\_in\_set( score, ( select group\_concat( score order by score desc ) from scores ) ) as rank from scores </code></pre><p>berikan daftar ini:</p><pre><code>id name score rank 1 ida 100 2 2 boo 58 5 3 lala 88 4 4 bash 102 1 5 assem 99 3 </code></pre><p>mendapatkan skor satu orang:</p><pre><code>select id, name, score, find\_in\_set( score, ( select group\_concat( score order by score desc ) from scores ) ) as rank from scores where name = 'assem' </code></pre><p>memberikan hasil ini:</p><pre><code>id name score rank 5 assem 99 3 </code></pre><p>anda akan memiliki satu pemindaian untuk mendapatkan daftar skor, dan pemindaian lainnya atau berusaha melakukan sesuatu yang bermanfaat dengannya. indeks pada kolom <code>score</code> akan membantu kinerja pada tabel besar.</p> <p><strong> tergantung pada fungsi generasi anda dan ukuran tabel akhir </strong></p><p>guid dimaksudkan untuk menjadi <em> unik secara global</em> pengidentifikasi. seperti yang dibahas dalam <a href="http://www.postgresql.org/docs/8.3/static/datatype-uuid.html">dokumentasi postgres 8.</a> tidak ada metodologi yang secara universal sesuai untuk menghasilkan pengidentifikasi ini, tetapi postgresql tidak mengirim dengan beberapa kandidat yang lebih berguna.</p><p>dari ruang lingkup masalah anda, dan kebutuhan untuk <em> offline</em> menulis, anda telah dengan rapi menghapus penggunaan apa pun selain guid, dan oleh karena itu tidak ada keuntungan kompensasi dari skema lain.</p><p>dari sudut pandang fungsional, panjang kunci biasanya tidak menjadi masalah pada segala jenis sistem modern, tergantung pada jumlah bacaan dan ukuran tabel. sebagai metodologi alternatif, klien offline dapat mengelompokkan catatan baru <em> tanpa</em> kunci utama dan cukup memasukkannya saat menghubungkan kembali. karena postgresql menawarkan tipe data "serial", klien tidak akan perlu menentukan id jika mereka dapat melakukan penulisan sederhana ke database.</p> kita akan menentukan hubungan  dengan menggunakan pemisalan sebagai berikut :



kita misalkan , maka diperoleh:



sedemikian sehingga : 

,

jika , maka diperoleh:



jadi, .