If you want to understand a kata deeply and compete in tournaments, you have to practice two skillsets with some overlap. That said, I have respect for kata athletes. They dedicate a lot of time to training and most of them are better than me in all different areas like Kumite or self defense, even though they focus on Kata outward "performance". Melihat siapa yang sama-sama Anda kenal. Minta diperkenalkan. Hubungi langsung Yusup. Bergabung untuk melihat profil lengkap. Lihat profil Yusup Bachtiar di LinkedIn, komunitas profesional terbesar di dunia. Yusup mencantumkan pendidikan di profilnya. BerawalDari Nol Rahasia Bisnis Rosululloh From Zero To Hero - KokoLinds.Com Kali ini, saya akan membagikan kepada Anda 12 Rahasia Bisnis Rasulullah. Sehingga Anda bisa mencoba memahaminya satu persatu dan mempraktekkannya. Kata gagal merasuk begitu dalam hingga berkuasa dalam pikiran kita mengalahkan arti penting kesuksesan itu sendiri ‎Îșατα-(kata-) + ‎ÎČÏÏŒÏ‡ÎžÎżÏ‚ (vrĂłchthos, “ throat (Ancient Greek) ”) → ‎ÎșαταÎČÏÎżÏ‡ÎžÎŻÎ¶Ï‰ (katavrochthĂ­zo, “ to gobble, to devour, to wolf down ”) added before a noun, adjective or verb to create words that indicates something to a great degree or intensity : fromZERO to HERO. Sebuah kata mungkin takan bisa menjelaskan apa yang kita alami, tapi asal kau mengerti, kata-kata itu dapat mewakili kita dalam menunjukan sikap ataupun sesuatu. saya tuliskan kata-kata yang menurut saya dapat menjadi renungan dan motifasi anda untuk ke depannya agar dapat menjadi pribadi yang lebih baik lagi. rkKZrq. About Zero Kata English Now you can play Tic Tac Toe on your Android Phone or Android Tabs for free. Now you can play Tic Tac Toe on your Android Phone or Android Tabs for free. What's New in the Latest Version Last updated on Apr 28, 2016 Minor bug fixes and improvements. Install or update to the newest version to check it out! Translation Loading... Additional Game Information Latest Version Uploaded by X-b JunHao Requires Android Android Category Free Puzzle Game Report Flag as inappropriate MY GUIDE TO AUTHORING NEW KATA ON CODEWARS This entry is not intended as a means of establishing myself as an authority on this matter. Having just authored my 6th Kata, I thought I'd take a moment to make a note of my thoughts on the processes involved in a Kata'a birth on Codewars. This entry will reflect on what it takes for a Kata to make it out of Beta status, what makes a Kata popular and how to conceive an original idea for a Kata. Everything that's written here is nothing more than my own personal opinion on a subject in which I only have four weeks' experience, so please feel free to contribute your own thoughts and ideas! Think of an idea This might easily be the part of the process that takes the longest. Coming up with an idea for a Kata, let alone a good one, is all about balance. Balance between originality, complexity and your objective. I'll come to each of these three points in a moment, but first I'd like to share with you how I find a Kata idea. I like to imagine a hypothetical use for the Kata in a real life computer system or application. I draw upon my own personal knowledge and think about which bits could be interpreted through code. As a linguist and a musician, I naturally turn towards languages and music for inspiration. I identify particular patterns and rules within my chosen field and try to imagine them interpreted in JavaScript. For example, in the last Kata I wrote, I picked a pronunciation rule for which I couldn't think of any exceptions. I thought about how I could most easily have 'any word' as an input for my function. By identifying each word's final letter as the dependent variable, I was able to narrow my inputs down to 26 possibilities each different letter of the alphabet. I used a similar technique in this Kata which deals with finding the stress in multi-syllabic English words. In this case, I defined each word/input by it's word ending, meaning I had to declare all the possible inputs in my description. Looking back, I think there are elements of this approach which conflict with authoring a successful Kata a Kata that makes it beyond Beta into battles that count in the Codewar context of points and ranking and I shall deal with these before the end. Originality How important is originality in authoring a successful Kata? Sorting Kata by popularity after clicking the Kata icon in the left-hand navigation bar tells us that, to a certain extent, it does! Take this Kata as an example. Based on an actor's Twitter Feed, the appeal of this Kata is that it can be conceptualised in a real-world context. Complexity A Kata's complexity takes on a dual nature. There is, on the one hand, the complexity of the description, and on the other, the complexity of the solution required. Regarding the latter, the beauty of JavaScript and of coding in general, is that there is always a myriad of different ways of solving a problem, some more complex than others. Essentially, however complex / simple you think your Kata is, there is always someone else who solves it in a more / less complex / simple way! Back to the description and a point I wanted to come back to from my own Kata examples, I think the simpler and shorter the description, the better the Kata. Looking back on Katas I created like this one and this one, I think the chosen concepts require too much explanation to hold the attention of the code warrior for enough time to persuade him or her to take on the challenge. Having said this, there are probably code warriors out there who enjoy a good long read before diving in, but they're probably in the minority. The only Kata I have authored to come out of Beta so far is this one based on the arpeggio attached to the root note of a musical scale. I think the relative success of this one is due in no small way to the simplicity of the description. Similarly, I think this one might also have the potential to join it's musical cousin, 'The Arpeggiator', beyond Beta thanks to a relatively quick description. Objective Finally, you have to ask yourself, what do you want the code warrior to do? What do you want the code warrior to learn from taking on your challenge? Getting the code warrior to solve your kata in a particular way can be done through instructions in the description like this one or this one. There are also ways to channel the solution method through code, but I have not yet found away to achieve this. Useful links for Kata authors This repository contains excellent examples of random test cases to improve the sturdiness of your tests. A comprehensive list of the best Kata practices found in the code wars docs. Plenty of good tips in the code wars Codex From zero to hero adalah kalimat yang tepat untuk menggambarkan pemain Zero to Hero, adalah kata-kata yang tepat menggambarkannya. Orang-orang juga menerjemahkan Our free Zero to Hero program will navigate you through the maze of Forex Zero to Hero gratis kami akan menavigasi Anda melalui labirin perdagangan Jesus can change our situations of our lives, from zero to Yesus yang dapat mengubah keadaan hidup kita, from zero to tiga tahun saja, negara tersebut telah berubah from zero to tiga tahun saja, negara tersebut telah berubah from zero to free Zero to Hero program will forex profit supreme system you through the maze of Forex Zero to Hero gratis kami akan menavigasi Anda melalui labirin perdagangan me, Jobs Zero to Hero story is a perfect example of how vision and perseverance make dreams come saya, Jobs Zero to Hero story adalah contoh sempurna tentang bagaimana visi dan ketekunan membuat mimpi menjadi jump into some of the ways you can take your consulting from zero to you want to take your blog from Zero to Hero, I have some incredible blogging tips for sobat ingin Jadikan Blog Sobat From Zero to Hero di 2019, saya memiliki beberapa tips blog yang luar biasa untuk Identity can take you from zero to hero as well as from hero to bisa menulis kisah from Zero to Hero dan juga sebaliknya from Hero to Zero include hundreds of free articles, live webinars with experienced traders,as well as online courses like Zero to Hero and Forex termasuk ratusan artikel gratis, webinar langsung dengan pedagang berpengalaman,serta kursus online seperti Zero to Hero dan Forex is a selfmade superstar of this generation who has made it from zero to menjadi sosokyang supersibuk untuk selebritas yang awalnya berangkat from zero to hero you're playingcash games you're able to go from zero to hero in a couple of Anda sedang bermain game kas Anda dapat pergi dari zero to hero dalam beberapa them all at once from zero to hero is a full-time job that requires a lot experimenting and semuanya sekaligus dari nol hingga pahlawan adalah pekerjaan penuh waktu yang membutuhkan banyak eksperimen dan story“from zero to hero” of a teenager named Bishma who has martial arts talent. seni bela you're playingcash games you're able to go from zero to hero in a couple of Anda bermain dengan permainan uang, Anda dapat beralih dari nol ke pahlawan di beberapa is more fun with a little assistance from your group of friendsgo along with us in Blogging U. for Blogging 101 Zero to Hero this January, and give your blogging aptitudes a adalah lebih menyenangkan dengan sedikit bantuan dari teman,bergabung dengan kami dalam blogging untuk Anda Blogging 101 Zero to Hero pada bulan Januari, memberikan dorongan blog New Zealand Herald said Guptill's run out of Dhoni, arguably the world's best finisher in ODI cricket, was redemption for a poor run of form with the bat,while Stuff Media said he had gone“From zero to hero”.Selandia Baru Herald mengatakan, kepergian Guptill dari Dhoni, yang bisa dibilang sebagai finisher terbaik dunia di ODI cricket, adalah penebusan untuk penampilan buruk dengan kelelawar,Blogging's more fun with a little help from your friendsjoin us in Blogging U. for Blogging 101 Zero to Hero this January, and give your blogging skills a adalah lebih menyenangkan dengan sedikit bantuan dari teman,bergabung dengan kami dalam blogging untuk Anda Blogging 101 Zero to Hero pada bulan Januari, memberikan dorongan blog keterampilan New Zealand Herald said Guptill's run out of MS Dhoni, arguably the world's best finisher in ODI cricket, was redemption for a poor run of form with the bat,while Stuff Media said he had gone"From zero to hero".Selandia Baru Herald mengatakan, kepergian Guptill dari Dhoni, yang bisa dibilang sebagai finisher terbaik dunia di ODI cricket, adalah penebusan untuk penampilan buruk dengan kelelawar,Will Akari's dream ever come true or will she be forced to give up before she even has a chance to get started,and can Aria help this E-rank girl go from zero to hero?Mungkinkah mimpi Akari pernah terwujud atau dia terpaksa menyerah sebelum dia sempat memulai,dan bisakah Aria membantu gadis E-rank ini pergi dari nol ke pahlawan?Capital To make money you need money, this may not be true in many cases but in caseof stock you need a lot of capital to become zero to hero or to become successful billionaire menghasilkan uang Anda butuh uang, ini mungkin tidak benar dalam banyak kasus,tetapi jika pasar saham Anda memerlukan banyak modal untuk menjadi nol bagi pahlawan atau menjadi miliarder sukses Investor. Cerita motivasi orang-orang sukses bisa menjadi penyemangat saat Anda merasa patah arang, terutama bila kehidupan Anda terasa begitu-begitu saja. Faktanya, banyak orang yang pada awalnya tidak memiliki modal bersedia banting tulang, bahkan hingga bekerja serabutan, yang pada akhirnya meraih kesuksesan. Hal ini membuktikan bahwa semua orang, termasuk Anda, sebetulnya bisa menambah nilai hidup Anda, selama Anda bersedia menerapkan karakteristik tertentu, yang ada dalam cerita motivasi hidup sederhana di bawah ini. 1. Kolonel Sanders Tahukah Anda, di balik kesuksesan Kentucky Fried Chicken terdapat berkali-kali penolakan terhadap resep ayam goreng legendaris ini? Di usia 65 tahun, Kol. Sanders bekerja di peternakan sambil tetap menjajakan ayam gorengnya hingga menjadi bisnis raksasa seperti sekarang. Dari Kol. Sanders, Anda mengetahui bahwa tidak ada kata terlambat untuk memulai perubahan. 2. Yasa Singgih Yasa lahir dari keluarga yang sederhana. Demi merasakan bangku perkuliahan, Ia rela melakoni segala jenis bisnis agar bisa membayar uang pendidikannya sendiri. Bermodalkan 7 lusin sepatu, Yasa mendirikan kerajaan bisnis hingga menyandang titel CEO dari Men’s Republic, sebuah lini fashion pria. Yasa memiliki motto kindspiration’, yang artinya kind & inspiration’. Ia berharap bahwa Ia tetap bisa menjadi orang yang bermanfaat dan berbagi inspirasi terhadap sesama. Jeli melihat peluang serta tetap melakukan nilai-nilai kebaikan merupakan kekuatan seorang Yasa Singgih. 3. Sunny Kamengmau Merantau sejak usia belasan dan menjalani berbagai pekerjaan serabutan, Sunny Kamengmau pun berhasil menjadi pemilik brand Robita, merk tas kulit yang memiliki banyak penggemar di Jepang. Di sela pekerjaannya, Ia menyempatkan diri mempelajari bahasa Inggris dan Jepang hingga berhasil menjalin relasi dengan pebisnis tas kulit sukses di Jepang. Keinginan untuk belajar serta giat menjalin relasi merupakan kunci utama kesuksesan Sunny. Faktanya, untuk meraih kesuksesan, tidak cukup hanya dengan lima kiat itu saja. Cerita motivasi from zero to hero ini akan sia-sia bila tidak Anda praktekkan. Untungnya, pelatihan New Chapter ESQ tidak hanya mengajarkan 5 kunci kesuksesan, melainkan 10 kiat untuk mengubah hidup menjadi lebih baik. Dengan mengikuti pelatihan ini, Anda akan mampu menjadi sosok yang tidak hanya sukses, namun juga tangguh, damai dan bermanfaat bagi sesama. Bisa saja, di masa mendatang, cerita kesuksesan Anda-lah yang kelak menjadi cerita motivasi singkat yang bermakna bagi orang lain. This blog is part of a series on OpenShift sandboxed containers and focuses on the operator portion of the solution. See this blog for a simple introduction to OpenShift sandboxed containers. You can also refer to the documentation to understand the basics of the OpenShift sandboxed containers operator. In this blog, we will dive deeper into the internals of what the OpenShift sandboxed containers operator does going bottom-up. We will take you through what happens behind the scenes for performing the installation and maintenance of the Kata containers runtime on an OpenShift cluster. By the end of this blog, you should have a solid understanding of how this operator performs its tasks in a Kubernetes-native way. The Operator Framework and Its Usage What is the Operator Framework? How does the OpenShift sandboxed containers operator architecture fit into the Kubernetes architecture and the Operator Framework? Kubernetes is all about automation. The goal of Kubernetes operators is to automate tasks that are typically done by a human operator an infrastructure engineer or application developers with simple software. Because it is software, it scales better and potentially manages huge numbers of instances. To achieve this level of automation, Kubernetes lets us extend its API by creating custom resources CR. Those resources can be treated like original Kubernetes resources, such as Pods and Nodes. The following diagram shows similarities between the workflow of a human and a Kubernetes operator So what exactly makes this imitate the behaviour of a human operator? Where is the translation of knowledge for example, . about the needs of a second runtime and the effort it takes into software? Number two in the above diagram shows how the first step is the installation of the Kata containers on the nodes and configuring it to one's needs. Doing this step manually would mean installing RPMs on each system and editing configuration files. The operator starts the installation by creating a MachineConfig object that triggers another operator, the MCO, to handle the operator. Once installed, a human operator would watch see number two in the above diagram the state of the system for events that require an action to keep it in the intended state. Kubernetes provides a concept called watches. By creating a watch, the operator can, for example, support scaling by watching the cluster’s number of nodes. When new nodes are added to the cluster, the Kata runtime needs to be installed on it as well. By adding a watch on the size of the machine config pool "worker," the operator can keep track of it. When notified about a size change, it makes sure all the conditions that sandboxed containers need to run are replicated to the new node as well. Eventually - step number three in above diagram - when the Kata Containers’ runtime is installed and configured, the last step is to add the RuntimeClass, by creating a new RuntimeClass object. While the human operator does this with “oc apply,” the operator sends an API request to create the RuntimeClass. Kubernetes Concepts and the Operator Framework Let's start with a very short introduction to operators in general. This will help you understand what and why the operator does what it does. The controller pattern is close to the heart of Kubernetes. A controller constantly watches and reconciles the specified state of a resource and makes sure the current state matches it. The following diagram depicts the controller pattern Basically the steps are The controller, which is part of the operator, watches this resource and gets a change event. Now it knows the new desired state of the resource. The controller does what it takes to drive the current state towards the desired state it just learned about. The Operator pattern builds on the controller pattern. An operator uses one or more controllers. It uses a CustomResourceDefinition CRD as input and output for the current state and desired state. In this case, the CRD is the KataConfig. An Operator can also own more than one CRD. Typically, it has a reconcile loop for each CRD it owns. But more about reconciling later. The Operator SDK Many operators exist today, managing the life cycle of system components, applications, databases, and more. What they have in common is that they implement a pattern, the Operator pattern, which is described in the Operator Framework. Because all operators implement this pattern, it would be a shame if every operator developed had to implement this common logic on its own. Fortunately, that is not the case, because we have the Operator SDK. It lets developers generate most of the code. What is left to implement for an operator developer is the reconciliation loop. That is where the magic happens. Using the Operator Framework for the Operator To turn the declared state of Kata in the cluster into reality such as software being installed or configuration settings changed, an operator uses two building blocks The first is the KataConfig Custom Resource, which describes the target cluster state. The second is the reconciliation loop, which follows the custom resource current state and converges it to the target state. Let’s provide more details on each of the building blocks. The KataConfig Custom Resource A custom resource CR is a user-defined resource type. The opposite would be a "Build-in resource type" such as a "Pod." CRs are used when one wants to define new custom controllers. The sandboxed containers operator currently owns one custom resource called KataConfig. Kata containers is currently the one and only runtime that the operator manages, hence the name. In the future, it is possible that more will follow. Reconciliation Loop A reconciliation loop is a part of the operator. It implements the part of the controller/operator pattern that drives the current state towards the desired state. The following diagram shows the KataConfig reconcile loop Let’s go through the different steps The KataConfig resource is added/modified/deleted. The controller watches this resource instance. The controller gets a change event along with the resource data and the type of event added/modified/deleted. In the reconcile loop, which is part of the controller, it sends requests to adjust the current state towards the new desired state. The main action happens when the KataConfig CR is created 1. The Controller in the Operator will run its reconcile function as seen in the above diagram. This is the heart of the Operator, the part where it makes sure that the desired state matches the current state 4. Let’s follow the example in the diagram where a user creates an instance of the KataConfig CR via the OpenShift console. The controller is a client of the API server and watches the resource type. When it is notified about an added instance 3, it creates a new KataConfig instance. The first thing done in the reconcile function is to GET the KataConfig instance. When this GET request returns a KataConfig instance and it is not marked for deletion, the operator will install Kata on the cluster. The opposite change in state would be when the instance of KataConfig with the name "example-kataconfig" is deleted, for example, 'oc delete kataconfig example-kataconfig'. In this case, the reconcile function is called, and when it finds a deletion timestamp on the KataConfig object, it goes ahead and undoes everything it did during the installation. However, a prerequisite to uninstallation is that all Pods using the Kata runtime have been deleted. If the operator finds Pods that are still using the Kata runtime, it will display a warning message in the status section of the KataConfig Custom Resource and block the uninstallation until it is resolved by deleting the Pods. The OpenShift sandboxed containers Building Blocks Going back to our previous blog Operator, Please connect me with Kata Containers let’s recap the main building blocks we have There are two main building blocks. We have the operator itself, which is installed via the OperatorHub in the OpenShift console like any other operator. The other main building block is the Kata Containers runtime and the dependencies it needs to run such as QEMU. These are part of a Red Hat CoreOS operating system extension and are not installed in a default OCP installation. Enabling the Runtime Let’s talk about how the operator installs the different components on the nodes. To distribute configuration files and enable OS services the OpenShift sandboxed containers Operator uses the Machine Config Operator MCO. It creates MachineConfig objects and watches MachineConfigPools for retrieving information regarding the state of nodes, conditions, and failure information. A MachineConfig is how OS-level configuration is defined when the snodes are running RHCOS. By using the ignition format, MachineConfigs can be used to change kernel, systemd, storage, and more. The operator creates the following MachineConfig object to enable the Kata containers runtime on the cluster nodes apiVersion MachineConfigmetadata labels app example-kataconfig worker name 50-enable-sandboxed-containers-extensionspec extensions - sandboxed-containers The last two lines in the above snippet are the magic ones that indicate the desire to enable the extension. The following diagrams shows what is triggered by this MCO watches the MachineConfig resource 2 and when notified about a change, takes action and enables the extension. The machine-config-daemon 3 runs as part of a Daemonset that is controlled by the MCO. It applies new machine configuration during updates to the nodes and verifies the new state. When it enables the sandboxed-containers extension, it runs rpm-ostree to install 4 the Kata Containers and QEMU RPMs. Users can watch the progress of the installation by monitoring the description of the Kataconfig CR they have created, that is, watch oc describe kataconfig example-kataconfig’. When the runtime is installed everywhere, the last step the operator performs is to add the definition of the new RuntimeClass apiVersion handler kata kind RuntimeClass metadata creationTimestamp "2021-05-26T085627Z" name kata [...] overhead podFixed cpu 250m memory 350Mi scheduling nodeSelector "" With the container runtime installed and the RuntimeClass created, using the new RuntimeClass is easy. By adding the name of the RuntimeClass to a deployment unit such as Pods or Deployments, the user can now instruct CRI-O to use the KataContainers runtime instead of the default one. For example metadata kind Pod RuntimeClassName kata See our previous blog, Operator, please connect me to sandboxed containers, for how to use the RuntimeClass. Now we will look at how they work. Kata Runtime Class So we took you through the process of how the operator creates the runtime class. So the question we then should ask is how does the runtime class work? Scheduling Runtime classes enable clusters to be heterogeneous. This means a node does not have to support every runtime class. Why would you want this? From a sandboxed containers point of view, one use case is that an administrator wants to separate his sandboxed workloads from others. Typically sandboxed workloads are sandboxed because they are less trustworthy or belong to different tenants. The scheduling field in the RuntimeClass kind has a nodeSelector field that can be used to select nodes. It also has a tolerations field. Together nodeSelector and the tolerations field can be used to specify suitable nodes in more detail. The following diagram shows the use of the RuntimeClass Note the following A Pod is created and it specifies the runtime class kata’. During the admission phase of the Pod creation, the nodeSelector and toleration fields are copied to the spec. The scheduler takes the RuntimeClass and the nodeSelector in it into account. After consideration of all parameters, the scheduler fills in the node field in the Pod’s spec. A bit more detailed How does nodeSelector from the RuntimeClass make it to the Pod’s nodeSelector? A user creates a Pod and then 
 a lot of things happen. One of those is that during admission, the RuntimeClass admission controller merges the runtime class’ nodeSelector into the Pod’s spec. What it does is simply add the key-value pairs. If a key-value pair already exists, it will abort and reject the Pod, that is, creation of the Pod will fail for the user. The merge goes well and the Pod is created. The scheduler can now consider all relevant fields, including those updated by the RuntimeClass admission controller, and decide on which node the Pod will be scheduled for. Pod Overhead With Kata Containers, a Pod needs more resources compared to a runc container. It requires more memory because on top of kubelet, container runtime, kernel, and logging, it also runs a virtual machine, that is, a guest kernel, generic Linux userspace programs, and Kata-specific ones like kata-agent. Besides memory, those also need CPU resources. Similar to the scheduling part of the RuntimeClass, PodOverhead is also handled by its admission controller. A user wants to create a Pod, an API request is sent to the API server, and after it is authenticated, the registered mutating admission webhooks are called. One of those is the RuntimeClass admission controller which adds the overhead values specified in the RuntimeClass to the resource requests of the Pod. The values we set as defaults have been measured in our internal tests and proven to be good for most cases. Users can change pod Overhead values,but we recommend not doing so. Installing on Selected Nodes Only Let’s talk about what a user should perform when aiming to run Kata Containers only on a subset of nodes in the cluster. When a KataConfig CR is created, the user can choose a label. This label is applied to nodes that should have the Kata Containers runtime installed by the cluster-admin. What the operator does then is to create a new Machine Config Pool MCP. All nodes that have the label will become a member of this pool. The following diagrams shows this scenario Note the following A new Machine Config Pool called kata-oc’ is created by the operator when it is specified in the KataConfig. Nodes that are part of the kata-oc’ pool have the Kata Containers runtime installed. All other nodes stay untouched and will not considered when scheduling Pods using the RuntimeClassName kata’. This is a small snippet of the kata-oc’ MCP specification Machine Config SelectorMatch Expressions Key Operator In Values kata-oc worker Node SelectorMatch Expressions Key custom-kata-pool Operator In Values true This means that the MachineConfig also slightly changes as follows apiVersion MachineConfigmetadata labels app example-kataconfig worker kata-oc name 50-enable-sandboxed-containers-extensionspec extensions - sandboxed-containers MachineConfig Pools map MachineConfigs to nodes. With this MachineConfig, and the NodeSelector in the pool, we map “extension - sandboxed-containers” to the kata-oc MachineConfig Pool. What this means is The extension is enabled on those nodes with label “ Summary With the sandboxed containers operator, a new kubernetes-native way of deploying and managing the Kata runtime is available for OpenShift. In this blog, we covered the key building blocks of theOpenShift sandboxed containers operators. This includes the reconciliation loop, machine pools, runtime classes, scheduling, and more. In the next blog, we will discuss ways to analyze and troubleshoot problems in the OpenShift sandboxed containers operator.

kata kata from zero to hero