Kategori: Umum

PHP Design Patterns - Pola Observer

Dengan Watkin Lloyd Steven , Selasa 29 Desember 2009 22:02

Aku sudah membaca Kepala Pertama Design Patterns baru-baru ini dan telah memutuskan untuk menulis beberapa pola sebagai contoh PHP untuk keuntungan sendiri. Yang pertama bahwa saya telah memutuskan untuk kode up adalah Pola Observer . Definisi formal Pola Observer adalah:

Pola pengamat (a subset dari asinkron mempublikasikan / berlangganan pola ) adalah sebuah perangkat lunak desain pola di mana sebuah objek , yang disebut subjek, menyimpan daftar tanggungan perusahaan, pengamat disebut, dan memberitahu mereka secara otomatis dari setiap perubahan negara, biasanya dengan menelepon salah satu dari mereka metode . Hal ini terutama digunakan untuk mengimplementasikan sistem penanganan acara terdistribusi.

Ketika sistem menjadi lebih longgar digabungkan memastikan bahwa ketika sebuah peristiwa terjadi semua sistem yang memerlukan pengetahuan update ini diinformasikan. Misalnya, posting blog, setelah menyimpan tulisan kita mungkin perlu memperbarui mesin pencari (misalnya Lucene), update sitemap kita, tag, pengguna berlangganan email, dll Pola pengamat memungkinkan pengembang untuk menambahkan pendengar tambahan tanpa mengedit objek diamati mereka . Dengan menyuntikkan pengamat (yaitu mesin pencari pengamat update, sitemap generator, dll) ke dalam (sistem posting blog yaitu mengedit) subjek kita dapat memungkinkan untuk melakukan semua pembaruan yang diperlukan tanpa perubahan apapun.

Continue reading 'PHP Design Patterns - Pola Observer' »

Kantor Grid Computing menggunakan lingkungan Virtual - Bagian 3

Dengan Watkin Lloyd Steven , 4 Desember 2009 23:37 Jumat

Pengantar

Saya bekerja di sebuah perusahaan di mana kita menjalankan banyak pekerjaan batch processing jutaan catatan data setiap hari dan saya sudah berpikir baru-baru ini tentang semua mesin yang duduk-duduk masing-masing dan setiap hari melakukan apa-apa selama beberapa jam. Bukankah lebih baik jika kita bisa menggunakan mesin-mesin untuk meningkatkan kekuatan pemrosesan sistem kita? Dalam Seri artikel ini saya akan melihat potensi manfaat mempekerjakan kantor grid menggunakan lingkungan virtualised.

Pada bagian 2 kita melihat pekerjaan server akan berjalan, dan bagaimana pekerjaan harus dikonfigurasi untuk mencapai jumlah terbesar sementara proses memastikan bahwa setiap pekerjaan diproses tanpa gagal.

Menyiapkan pekerja Anda - atau server Limp

Langkah berikutnya dalam proses ini adalah untuk mengatur pekerja virtual Anda. Untuk ini saya akan menggunakan instalasi CentOS menggunakan VirtualBox. Aku akan menginstal mySQL dan PHP pada server, juga dikenal sebagai pincang (Li Nux, m ySQL, P HP) Server (saya mungkin telah membuat nama itu atas).

  • Instal VirtualBox pada mesin windows anda (ikuti link)
  • Download dan install CentOS (versi 5.3) dalam mesin virtual yang dibuat

Tidak ada gunanya saya terus ini ada kemungkinan 's / d 1.000 tutorial besar di luar sana (ok, ini satu: Membuat dan Managing mesin virtual CentOS bawah virtualbox ). Poin penting untuk diperhatikan saya kira adalah bahwa saya disebut GridMachine mesin virtual saya.

Sejauh pilihan saya klien virtualisasi dan sistem operasi pergi ke sana ada alasan kuat besar bagi masing-masing pilihan. VirtualBox adalah sesuatu yang saya gunakan di komputer rumah saya dan didukung oleh tiga sistem operasi utama. Saya memilih CentOS sebagai OS nya stabil baik dan saya gunakan di server web sendiri. Saya sangat percaya pada alat yang tepat untuk pekerjaan (walaupun aku menerapkan 'menggunakan tercepat dan termudah untuk Anda' mentalitas di sini), jadi jika sistem operasi X menjalankan kode Anda lebih cepat dan lebih efisien menggunakannya sebagai gantinya:)

Yang penting pastikan bahwa VM Anda menggunakan DHCP, dinyatakan untuk setiap mesin virtual baru akan harus dikonfigurasi secara terpisah yang merupakan sesuatu yang kita tidak want.By menggunakan DHCP kita tidak perlu mengkonfigurasi pengaturan jaringan secara individual untuk mesin pekerja, DHCP akan tangan keluar IP untuk Anda. Karena itu anda dapat menyalin mesin virtual Anda tentang kantor tanpa khawatir tentang pengaturan masing-masing Facebook (ini meningkatkan skalabilitas dan mengurangi administrasi pekerja).

Proses Anda harus berusaha untuk mencapai adalah untuk mendapatkan sebuah mesin fisik baru, instal VirtualBox, dan kemudian cukup banyak menyebarkan gambar virtual tanpa banyak lagi. Mungkin bijaksana untuk setup semua pekerja Anda pada subnet yang berbeda sehingga Anda setidaknya bisa melihat berapa banyak mesin berjalan. Anda juga harus menyiapkan mesin Anda pada sewa panjang atau DHCP sewa terbatas.

Bagaimana menjalankan Jobs pada pekerja

Ini adalah area yang menarik dan ada beberapa metode yang valid untuk pekerjaan pengolahan pada pekerja. Di sini saya hanya akan membahas dua yang paling jelas:

  • Menerus menjalankan script: script A, baik itu shell script, atau script PHP dieksekusi sekali pada pekerja dan berjalan sebagai bagian dari sebuah loop tak terbatas. Saya sudah diskon metode ini sebagai salah satu kecelakaan naskah dan berpotensi pekerja Anda akan berhenti berjalan tanpa semacam intervensi.
  • Cron eksekusi script berdasarkan: Setiap menit X cron daemon kicks off panggilan ke skrip Anda untuk mendapatkan hal yang terjadi. Tanpa memeriksa beberapa hal ini dapat menyebabkan banyak salinan banyak script pekerja Anda berjalan.

Keputusan saya adalah pergi dengan cron yang kicks off shell script setiap 10 minutes. shell script saya melakukan kegiatan sebagai berikut:

  1. Dapatkan daftar proses dan grep ini untuk 'php'. Jika tidak ditemukan maka melanjutkan.
  2. Kode panggilan pekerjaan Anda, dalam kasus saya ini akan menjadi sesuatu yang berbasis PHP
  3. Pekerja script selesai menjalankan perusahaan
  4. Siap untuk pergi lagi pada panggilan yang sesuai berikutnya

bash script saya terlihat seperti berikut:

  #! / Bin / sh
 jika ps ax | grep-v grep |> grep php / dev / null
 kemudian
     echo "Ayub saat ini pengolahan, keluar"
 lain
     echo "Ayub tidak berjalan, mulai sekarang"
     php yourJobProcessingScript.php
 fi 

Catatan: echo adalah hampir sama sekali tidak ada gunanya, tetapi dapat membantu orang berikutnya yang datang untuk mencoba dan mengeditnya.

Yang menyimpulkan set up dari pekerja mesin virtual, cepat, sederhana, dan mudah untuk copy ke setiap bagian hardware baru yang diterima. 'Kepintaran' The sistem grid benar-benar tidak di OS divisualisasikan, yang semua dilakukan dengan kode dibuat untuk pekerjaan proses, konfigurasi pekerjaan, dan dalam memastikan bahwa pekerjaan berjalan saat yang tepat (yaitu ketika tuan rumah itu idle ).

Menyiapkan Windows untuk Menginisialisasinya Pekerja

Tugas pertama adalah untuk bekerja di luar perintah yang diperlukan untuk menjalankan mesin virtual dari baris perintah windows. Jika anda telah menginstal VirtualBox di lokasi default dan Anda sudah bernama GridMachine pekerja Anda maka perintah yang diperlukan untuk memuat pekerja Anda adalah:

  "C: \ Program Files \ Sun \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

Namun untuk menjalankan skrip dalam keadaan 'tanpa kepala' kita perlu menggunakan:

  "C: \ Program Files \ Sun \ VirtualBox \ VBoxHeadless.exe"-startvm GridMachine - vrdp = off 

Ini akan memulai mesin virtual tanpa GUI dan memungkinkan untuk menyelamatkan negara dengan anggun. Argumen kedua mematikan RDP sehingga tidak bertentangan dengan windows RDP, atau memberikan pesan tentang mendengarkan pada port 3389. Nama mesin virtual adalah kasus sensitif!

Berikutnya, kita akan perlu untuk mengatur jendela Facebook untuk memulai VM pekerja kita sekali mesin sudah idle. Untuk melakukan hal ini (pada Windows XP) Anda harus pergi Start -> All Programs - Accessories -> System Tools -> Jadwal Tugas sebagai berikut:

jadwal tugas

Selanjutnya klik pada 'Tambahkan Scheduled Task' diikuti dengan menelusuri menambahkan program kustom. Arahkan ke script VBoxManage Anda dan klik ok. Jadwal tugas Anda untuk salah satu pilihan (kita akan perubahan ini dalam satu menit) dan lanjutkan. Setelah melewati jendela layar berikutnya akan meminta Anda yang Anda ingin menjalankan tugas ini, saya sarankan baik 'Administrator' atau membuat pengguna istimewa baru. Ingat kita tidak ingin mengganggu akun staf standar pada mesin pada titik apapun. Klik pilihan acara berikutnya dan periksa lanjutan untuk tugas ini.

Untuk akhir textbox menjalankan menambahkan string 'startvm GridMachine' kami dan memastikan bahwa hanya berjalan ketika login dibiarkan unticked. Kunjungi tugas jadwal berikutnya dan mengubah jadwal drop ke pilihan 'saat menganggur', memilih jumlah waktu yang Anda ingin mesin untuk idle sebelum pindah ke tab berikutnya.

Akhirnya untick opsi yang menyatakan menghentikan tugas jika telah menjalankan X jumlah waktu, tapi jangan centang opsi untuk menghentikan tugas jika mesin tidak lagi menganggur.

jadwal

Itu saja kemudian untuk host setup windows!

Ringkasan

Pada bagian ini kami telah menetapkan suatu mesin virtual untuk bertindak sebagai seorang pekerja, serta cara yang kita sebut dan melaksanakan tugas kita skrip pengolahan (untuk diriku sendiri script PHP). Dari sini kita melihat cara membuat salinan kita jendela untuk memulai mesin virtual dalam modus tanpa kepala ketika komputer menjadi siaga, dan simpan negaranya ketika pengguna kembali penggunaan mesin. Semoga pada saat ini Anda melihat betapa sederhananya adalah untuk mengatur sistem tersebut dan gatal untuk mendapatkan beberapa percobaan pergi sendiri!

Lain kali

Di Bagian 4 kita akan melihat menggunakan alat-alat untuk memastikan bahwa Anda menjalankan versi terbaru dan kode sumber data sehingga hasil yang diperoleh selalu up-to-date dengan informasi bisnis terbaru dan logika.

Nama Inggris Directory dan Aplikasi Facebook

Dengan Watkin Lloyd Steven , 10 April 2009 09:33 Jumat

Salah satu hal yang menyenangkan saya telah terlibat dalam sementara bekerja untuk Tracesmart adalah nama direktori . Pada dasarnya kita mengambil database informasi yang sangat besar kami dan mengeluarkan setumpuk besar statistik tentang berbagai nama.

Proses ini semua adalah satu SEO upaya besar untuk menarik lebih banyak lalu lintas ke situs, tetapi juga memberikan beberapa informasi menarik dan statistik nama.

Berikut ini adalah contoh untuk nama saya Lloyd Watkin , atau lebih tepatnya kurasa Steven Watkin . Ambil satu menit untuk mencari nama Anda di situs Tracesmart, mungkin menarik;)

Kami juga punya nama-nama statistik data pada direktori nama halaman yang memberitahu anda apa nama telah mencari dan bagaimana baru-baru ini. Its cukup menarik untuk melihat nama orang terkenal terbang statistik ketika mereka muncul dalam berita. Contoh terbaru adalah bahwa dari Liam Neeson yang istri meninggal karena kecelakaan ski baru-baru ini, meskipun jelas orang tidak cukup tepat di ejaan (sehingga jumlah besar hits pada nama ini) - Liam Nilson .

Aplikasi Facebook

Setelah nama-nama direktori telah dibuat kita mulai menciptakan aplikasi facebook yang kami duely bernama ' My Name '. Aplikasi facebook merupakan perpanjangan dari direktori nama dan memberikan beberapa statistik tambahan. Untuk menambahkan direktori nama ke account facebook anda silahkan kunjungi:

http://apps.facebook.com/my-name/

Flickr dan Yahoo!: Login Details Terlupakan

Dengan Watkin Lloyd Steven , Kamis 2 April 2009 07:31

Beberapa bulan yang lalu saya mengubah password saya Flickr sehingga teman bisa meng-upload beberapa gambar untuk itu. Beberapa bulan kemudian saya menemukan saya sudah lupa bahwa password dan mencoba mengingat semua rincian rahasia saya dari Yahoo! hanya mimpi buruk. Aku Yahoo! alamat email selama beberapa tahun dan saya tidak yakin kapan atau di mana (saya tinggal) ketika saya mendaftar - oh hanya untuk membuat ini lebih jelas Flickr menggunakan sistem Yahoo! login:)

Yahoo! ada bantuan baik, mereka ingin persis rincian dan akan menolak apa pun yang tidak cocok. Plus aku tidak diperbolehkan untuk memberikan daftar rincian yang cocok mungkin itu harus benar pada setiap detail kalau tidak akan ditolak. Saya bisa memahami keamanan tetapi ini adalah mendapatkan rasa sakit di pantat, terutama karena aku bisa mengambil nama user saya ke alamat email yang biasa saya tanpa masalah apapun (mengapa tidak bisa Anda mengirim ulang di sana !?!?!). Di atas semua ini mereka ingin rincian dikirim ke kantor mereka di California, baik melalui surat atau fax, boo!

Langkah kembali ke Flickr yang baik hati mengirim email ke alamat email terdaftar saya meminta saya untuk melepaskan account Yahoo! dari account Flickr saya. Hore Aku kemudian bisa mendaftar dengan account Yahoo baru dan pasang kembali account Flickr ini login yang baru.

Setelah menunggu setidaknya seminggu setiap kali untuk Yahoo! untuk menjawab Flickr mendapatkan semua ini diurutkan dalam waktu 2-3 jam!

Bagus Flickr, untungnya Anda bepergian menjaga pelanggan Anda:)

Sekarang untuk kebosanan inilah semua orang lain link ke account Flickr saya

Terinspirasi ... dan guilted!

Dengan Watkin Lloyd Steven , Rabu 11 Maret 2009 08:51

Saya baru saja membuat blog untuk salah satu orang dalam pekerjaan - Matius Hopkins - dan melihat pertama posting-nya telah membuat saya berpikir bahwa mungkin aku harus menambahkan beberapa posting sebagai perusahaan yang baik sementara telah dan banyak telah terjadi selama 2008. Salah satu dari orang-orang dalam bekerja tidak sendiri blog untuk, baik tua Stephen Griffiths jadi kita lihat di sana juga.

Jadi aku akan bekerja keras pada dan menambahkan beberapa posting retrospektif tentang apa 2008 yang diselenggarakan untuk saya dan bagaimana 2009 adalah membentuk Facebook:)

2008 WTF?!?

Dengan Watkin Lloyd Steven , Kamis Januari 1, 2009 12:00

2008 merupakan tahun yang aneh, ada beberapa hal yang saya benar-benar menikmati hal itu, Â dan ada beberapa hal yang kini telah dilupakan dan pindah dengan ....

Penyelaman

Aku tidak berbuat banyak di jalan scuba diving saya pikir saya berhasil sekitar sekitar 10 menyelam sepanjang tahun. Salah satu penyelaman adalah scuba Santas acara di Vobster Quay yang lebih berhasil daripada impian terliar saya. Pada akhirnya kami mengumpulkan lebih dari  £ 1000 untuk RNLI , mendapat cakupan pada BBC dan ITV, dan memiliki sekitar 80 penyelam di dalam air. Vobster adalah lautan Santas scuba diving untuk hari itu! Saya sangat berharap saya bisa berbuat lebih banyak diving pada tahun 2009, (banyak lagi!) Mendapatkan kembali ke dalamnya akan melibatkan banyak pelatihan untuk merasa nyaman lagi. Aku rindu hari-hari mendapatkan di perahu, matahari berseri-seri bawah, menyambar lobster, pengepakan  upa dan menuju rumah untuk beberapa gelas bir.

Menjalankan

Pada akhir Januari 2008 saya terlibat dalam kecelakaan mobil, menabrak dari belakang sementara berhenti, tidak ada besar atau jadi saya pikir. Selama beberapa bulan sakit leher saya mendapat semakin buruk menghentikan saya berjalan. Pada akhirnya saya dihubungi kecelakaan klaim perusahaan yang mulai membuat saya pengobatan dengan chiropractor di Cardiff yang aku masih menghadiri (Maret 2009 - klaim masih belum diselesaikan baik). Menjalankan merupakan salah satu hal saya ingin kembali, aku mulai dengan Miles tetapi antara penyakit, cedera, dan dia akhirnya pindah ke Cambridge kita hanya keluar beberapa kali. Saya benar-benar membutuhkan tendangan yang baik sampai bum untuk pergi lagi, meskipun satu penghiburan saya adalah bahwa saya telah bersepeda kembali dan kedepan untuk bekerja selama berbulan-bulan yang melakukan saya beberapa baik.

Dipindahkan

Pada bulan Juli 2008 saya pindah ke sebuah flat dengan Megan, kita sudah melalui lukisan dan dekorasi dan mendapatkan itu benar-benar mencari Nicea -. Meskipun kita semacam menyeret tumit kami dengan lukisan ... diam. Flat di Adamsdown di Cardiff (saya tidak pernah bergerak jauh) dan setelan kita hanya besar.

Pekerjaan

Kerja adalah semua tempat pada tahun 2008, saya mulai dari hanyut sedikit sebelum mengambil bekerja di agen membiarkan sebagai manajer. Ini membantu tidak berakhir dengan perkebunan dan membiarkan perangkat lunak agen bahwa aku berkembang. rencana saya untuk perkebunan dan perangkat lunak agen membiarkan adalah untuk merilisnya sebagai produk berbiaya rendah ketika saya memiliki lebih banyak waktu untuk jelas itu. Dari apa yang saya menceritakan tentang produk bersaing di pasar lebih mudah untuk menggunakan dan melakukan banyak atau lebih dari fungsi yang sama dengan cara yang lebih baik:)

Pada bulan April 2008 datang ke ulang tahun 22 saya baik Megan dan ibu saya mulai mendorong saya untuk 'mendapatkan karir', yang ide yang sulit ditelan benar-benar apa yang saya butuhkan. Menjalankan perusahaan saya sendiri itu menyenangkan tapi tidak memberikan stabilitas yang diperlukan dan mendapatkan sedikit sekali di tujuan wasn'ta karir membiarkan badan jangka panjang. Itu selalu menjadi kasus menunggu sampai saya mendapatkan perangkat lunak saya selesai dan saya akan mulai menjualnya, tetapi waktu selalu terhadap saya.

Yang terjadi selanjutnya adalah beberapa wawancara dengan beberapa perusahaan besar di beberapa daerah yang besar, penuh janji pindah ke daerah baru, awal baru tampak besar. Penawaran pekerjaan terbaik adalah dengan penyedia hosting besar di daerah Worcester dan tampak ideal. Jadi apa yang terjadi? Yah aku telah mengembangkan solusi SMS online kembali sekitar natal yang sudah duduk-duduk tidak melakukan banyak hal yang investor yang ditemukan. Excellent Saya pikir dan kami berangkat. Semua tidak berakhir dengan baik dan setelah beberapa bulan janji dan tingkat stres meningkat saya membuat berdiri dan berjalan keluar. Bekerja 60 jam seminggu, pulang ke rumah dan melakukan hal lain 3-4 jam ditambah kerja akhir pekan semua dan untuk semua stres itu adalah salah satu keputusan terbaik yang pernah saya buat. (Di sini saya ingin mengucapkan terima kasih Megan, orang tua saya, dan teman-teman saya yang berdiri oleh saya, saya stres penis berkepala di kali, dan saya minta maaf)

Empat minggu kemudian saya mendarat diriku pekerjaan dengan sebuah perusahaan bernama Tracesmart di Cardiff Bay sebagai PHP Developer. Setelah melewati tes dan wawancara saya mulai dengan tumpukan seluruh antusiasme (seperti yang bisa membayangkan hal-hal yang telah menjadi bit rendah untuk kadang-kadang). Tracesmart melakukan orang yang mencari, orang pelacakan, roll penanganan data pemilih, yang melibatkan jumlah data yang sangat besar. Aku pernah ke sana sekarang untuk sekitar 5 bulan (diberikan saya sebenarnya menulis ini pada Maret 2009) dan aku mencintai setiap menitnya. Aku mendorong diriku sendiri setiap hari, memiliki lingkungan kerja yang besar (meja saya menghadap teluk!), Rekan-rekan yang baik! Saya telah terlibat dalam beberapa proyek yang baik (pesan lainnya untuk mengikuti) dan aku benar-benar bangga dengan pekerjaan saya di sana.

2009 ....

Meskipun mulai tahun 2009 di Jerman menderita virus Novo 2009 sangat bagus sejauh ini. Megan dan aku Spenta waktu Tahun Baru di Jerman dan Amsterdam. Amsterdam adalah indah dan rumah Anne Frank memiliki efek mendalam nyata pada saya, suatu tempat kita pasti akan kembali ke. Pekerjaan berjalan lancar. leher saya menjadi lebih baik dan lebih baik sehingga dalam waktu beberapa minggu aku akan kepala keluar bagi mereka penayangan pertama beberapa mengerikan sekali lagi. Satu-satunya hal saya sangat membutuhkannya sekarang adalah beberapa penyelaman yang baik (atau hari libur menyelam) untuk kembali ke ayunan hal!

Custom php.ini dengan Plesk

Dengan Watkin Lloyd Steven , Rabu 13 Agustus 2008 03:53

Kami mempunyai dedicated server dengan ukFast  yang kita jalankan beberapa domain yang ada di virtual server yang berjalan pada Plesk . Pokoknya, pada kebanyakan dari domain saya, saya ingin bersembunyi peringatan dan untuk keamanan terus kesalahan ke file log, namun pada beberapa domain yang saya (seperti yang aku berkembang pada) Saya ingin menunjukkan setiap peringatan jahat kecil dan kesalahan yang muncul.

Jika saya mengedit PHP ". INI php.ini> ini mempengaruhi masing-masing dan setiap domain pada server, bukan ide yang baik terutama ketika beberapa situs yang sepenuhnya hidup versi  Jadi untuk menyiasati hal ini Anda perlu menempatkan file bernama vhosts.conf dalam direktori conf Anda, misalnya, /var/www/vhosts/<my_domain>/conf/vhost.conf .

Setelah Anda menambahkan kode tambahan Anda, sekali lagi misalnya saya termasuk,

 php_value error_reporting E_ALL php_value display_errors On 

diikuti dengan menjalankan perintah berikut (ini reconfigures semua domain Anda yang hanya cepat malas daripada mengetik dalam nama domain ,

 # /usr/local/psa/admin/bin/websrvmng -a 

Jika Anda merasa sedikit gesit maka Anda dapat selalu mengetikkan versi lengkap yang,

 # /usr/local/psa/admin/sbin/websrvmng -u --vhost-name=<my_domain> 

Setelah perintah ini jika anda melihat ke httpd.include file, akan melihat bahwa httpd.include Anda akan memiliki termasuk line untuk vhost.conf Anda, sesuatu seperti ini:

 Include /srv/www/vhosts/domain.com/conf/vhost.conf 

Teori Bolometer

Dengan Watkin Lloyd Steven , Kamis 21 Juni 2007 01:18

Aku sudah ton email (baik sekitar 5: $) bertanya tentang pengenalan halaman 'bolometer teori' untuk saya gunakan untuk memiliki hingga di situs. Jadi di sini adalah sama seperti sebelumnya tetapi dengan beberapa link ke potongan lain bagian dari situs lama dihapus:)

Pengantar teori bolometer













Panorama Tema oleh Themocracy

5 pengunjung online sekarang
2 tamu, 3 bots, 0 anggota
Max pengunjung hari ini: 15 jam 09:50 UTC
Bulan ini: 26 jam 2011/07/05 00:35 UTC
Tahun ini: 130 pada 28-03-2011 10:40 UTC
Sepanjang waktu: 130 pada 28-03-2011 10:40 UTC