tag:blogger.com,1999:blog-33221462663783491472024-02-26T09:33:44.404-08:00Malaysian DeveloperMy experience on my daily works... helping others ease each othermasteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.comBlogger401125tag:blogger.com,1999:blog-3322146266378349147.post-7009653744263236282023-11-08T16:02:00.001-08:002023-11-08T16:02:25.848-08:00 🚨 A Wake-Up Call for Pattern Approval in the Age of Automation<p><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 20px; white-space-collapse: preserve;">Recent news on the unfortunate incident involving a South Korean man and an industrial robot serves as a stark reminder of the importance of stringent controls and assessments for robotics and AI systems. It's not the first case, and the implications are clear—it's high time we prioritize the thorough evaluation of algorithms and safety measures to prevent potential disasters. The last thing we need is our technological advancements turning into a real-life Terminator scenario or a page out of The Matrix.</span></p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 20px; line-height: var(--artdeco-reset-typography_getLineHeight); margin: 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space-collapse: preserve;"><br style="box-sizing: inherit;" /></p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 20px; line-height: var(--artdeco-reset-typography_getLineHeight); margin: 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space-collapse: preserve;">💡 Ensuring Safety in the Age of AI</p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 20px; line-height: var(--artdeco-reset-typography_getLineHeight); margin: 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space-collapse: preserve;"><br style="box-sizing: inherit;" /></p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 20px; line-height: var(--artdeco-reset-typography_getLineHeight); margin: 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space-collapse: preserve;">As we accelerate into an era dominated by automation, the necessity of validating artificial intelligence and robots before their integration into real-world scenarios becomes increasingly apparent. The risks associated with overlooking this crucial step are far-reaching, impacting not only individuals but also the trust we place in these transformative technologies. It's not just a matter of compliance; it's about safeguarding lives and instilling confidence in the capabilities of the AI and robotic systems we deploy.</p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 20px; line-height: var(--artdeco-reset-typography_getLineHeight); margin: 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space-collapse: preserve;"><br style="box-sizing: inherit;" /></p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 20px; line-height: var(--artdeco-reset-typography_getLineHeight); margin: 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space-collapse: preserve;">🌐✨ Empowering a Secure Tomorrow with SIRIM's Assurance</p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 20px; line-height: var(--artdeco-reset-typography_getLineHeight); margin: 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space-collapse: preserve;"><br style="box-sizing: inherit;" /></p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 20px; line-height: var(--artdeco-reset-typography_getLineHeight); margin: 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space-collapse: preserve;">In our dynamic world embracing the swift rise of automation, SIRIM, leveraging the expertise of NMIM, assumes a central role in sculpting a future where innovation harmonizes effortlessly with safety. As we lament recent unfortunate incidents, it is incumbent upon us to collectively advocate for responsible and secure technological advancements. SIRIM stands at the forefront, equipped to deliver crucial evaluations and verifications. Through SIRIM's pattern approval certifications, we meticulously inspect, test, and validate both hardware and software algorithms. Our commitment is to ensure that these technologies are not only cutting-edge but also safe, reliable, and robust, adhering strictly to the ethical standards of AI. Together, let's pave the way for a future where robots and AI enrich our lives without compromising on safety. </p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 20px; line-height: var(--artdeco-reset-typography_getLineHeight); margin: 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space-collapse: preserve;"><br style="box-sizing: inherit;" /></p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 20px; line-height: var(--artdeco-reset-typography_getLineHeight); margin: 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space-collapse: preserve;"><span class="ql-hashtag" data-test-ql-hashtag="true" style="background: var(--artdeco-reset-base-background-transparent); border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; font-size: var(--artdeco-reset-base-font-size-hundred-percent); font-weight: var(--artdeco-reset-typography-font-weight-bold); margin: var(--artdeco-reset-base-margin-zero); outline: var(--artdeco-reset-base-outline-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); vertical-align: var(--artdeco-reset-base-vertical-align-baseline);">#ai</span> <span class="ql-hashtag" data-test-ql-hashtag="true" style="background: var(--artdeco-reset-base-background-transparent); border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; font-size: var(--artdeco-reset-base-font-size-hundred-percent); font-weight: var(--artdeco-reset-typography-font-weight-bold); margin: var(--artdeco-reset-base-margin-zero); outline: var(--artdeco-reset-base-outline-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); vertical-align: var(--artdeco-reset-base-vertical-align-baseline);">#artificialintelligence</span> <span class="ql-hashtag" data-test-ql-hashtag="true" style="background: var(--artdeco-reset-base-background-transparent); border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; font-size: var(--artdeco-reset-base-font-size-hundred-percent); font-weight: var(--artdeco-reset-typography-font-weight-bold); margin: var(--artdeco-reset-base-margin-zero); outline: var(--artdeco-reset-base-outline-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); vertical-align: var(--artdeco-reset-base-vertical-align-baseline);">#patternapproval</span> <span class="ql-hashtag" data-test-ql-hashtag="true" style="background: var(--artdeco-reset-base-background-transparent); border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; font-size: var(--artdeco-reset-base-font-size-hundred-percent); font-weight: var(--artdeco-reset-typography-font-weight-bold); margin: var(--artdeco-reset-base-margin-zero); outline: var(--artdeco-reset-base-outline-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); vertical-align: var(--artdeco-reset-base-vertical-align-baseline);">#sirim</span> <span class="ql-hashtag" data-test-ql-hashtag="true" style="background: var(--artdeco-reset-base-background-transparent); border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; font-size: var(--artdeco-reset-base-font-size-hundred-percent); font-weight: var(--artdeco-reset-typography-font-weight-bold); margin: var(--artdeco-reset-base-margin-zero); outline: var(--artdeco-reset-base-outline-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); vertical-align: var(--artdeco-reset-base-vertical-align-baseline);">#nmim</span> <span class="ql-hashtag" data-test-ql-hashtag="true" style="background: var(--artdeco-reset-base-background-transparent); border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; font-size: var(--artdeco-reset-base-font-size-hundred-percent); font-weight: var(--artdeco-reset-typography-font-weight-bold); margin: var(--artdeco-reset-base-margin-zero); outline: var(--artdeco-reset-base-outline-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); vertical-align: var(--artdeco-reset-base-vertical-align-baseline);">#aimalaysia</span> <span class="ql-hashtag" data-test-ql-hashtag="true" style="background: var(--artdeco-reset-base-background-transparent); border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; font-size: var(--artdeco-reset-base-font-size-hundred-percent); font-weight: var(--artdeco-reset-typography-font-weight-bold); margin: var(--artdeco-reset-base-margin-zero); outline: var(--artdeco-reset-base-outline-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); vertical-align: var(--artdeco-reset-base-vertical-align-baseline);">#sirimdigitalfactory</span> <span class="ql-hashtag" data-test-ql-hashtag="true" style="background: var(--artdeco-reset-base-background-transparent); border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; font-size: var(--artdeco-reset-base-font-size-hundred-percent); font-weight: var(--artdeco-reset-typography-font-weight-bold); margin: var(--artdeco-reset-base-margin-zero); outline: var(--artdeco-reset-base-outline-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); vertical-align: var(--artdeco-reset-base-vertical-align-baseline);">#TechSafetyLeadership</span> <span class="ql-hashtag" data-test-ql-hashtag="true" style="background: var(--artdeco-reset-base-background-transparent); border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; font-size: var(--artdeco-reset-base-font-size-hundred-percent); font-weight: var(--artdeco-reset-typography-font-weight-bold); margin: var(--artdeco-reset-base-margin-zero); outline: var(--artdeco-reset-base-outline-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); vertical-align: var(--artdeco-reset-base-vertical-align-baseline);">#InnovationWithIntegrity</span> 🚀🔐</p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 20px; line-height: var(--artdeco-reset-typography_getLineHeight); margin: 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space-collapse: preserve;"><br style="box-sizing: inherit;" /></p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 20px; line-height: var(--artdeco-reset-typography_getLineHeight); margin: 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space-collapse: preserve;"><a href="https://www.msn.com/en-my/news/national/s-korean-man-killed-by-industrial-robot/ar-AA1jAFsc?ocid=socialshare&pc=HCTS&cvid=578e3d2c73984db599c5028ce71d43fa&ei=19" target="_blank">S. Korean man killed by robot</a></p>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-65796010653413120562023-02-06T18:46:00.003-08:002023-02-06T18:46:19.158-08:00 Open source GIS software<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://www.supermap.com/en-us/template/pc/cn2016/images/20200619mob.jpg?t=0618" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="400" data-original-width="640" height="327" src="https://www.supermap.com/en-us/template/pc/cn2016/images/20200619mob.jpg?t=0618" width="523" /></a></div><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;">1. QGIS: </span><a data-attribute-index="8" href="https://lnkd.in/gbpdexdZ" style="background-color: white; border: var(--artdeco-reset-link-border-zero); box-sizing: inherit; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; font-weight: var(--font-weight-bold); line-height: inherit !important; margin: var(--artdeco-reset-base-margin-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); position: relative; text-decoration: var(--artdeco-reset-link-text-decoration-none); touch-action: manipulation; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); word-break: normal;">https://lnkd.in/gbpdexdZ</a><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;"> QGIS is a user-friendly Open Source Geographic Information System (GIS) licensed under the GNU General Public License. QGIS is an official project of the Open Source Geospatial Foundation (OSGeo). It runs on Linux, Unix, Mac OSX, Windows and Android and supports numerous vectors, raster, and database formats and functionalities.</span><p></p><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;">2. GRASS GIS: </span><a data-attribute-index="9" href="https://lnkd.in/geXbgBBD" style="background-color: white; border: var(--artdeco-reset-link-border-zero); box-sizing: inherit; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; font-weight: var(--font-weight-bold); line-height: inherit !important; margin: var(--artdeco-reset-base-margin-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); position: relative; text-decoration: var(--artdeco-reset-link-text-decoration-none); touch-action: manipulation; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); word-break: normal;">https://lnkd.in/geXbgBBD</a><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;"> GRASS GIS, is an Open Source Geographic Information System providing powerful raster, vector and geospatial processing capabilities. It can be used either as a stand-alone application or as backend for other software packages such as QGIS and R or in the cloud. It is distributed freely under the terms of the GNU General Public License (GPL). GRASS GIS is a founding member of the Open Source Geospatial Foundation (OSGeo).</span><br style="background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;" /><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;"> </span><br style="background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;" /><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;">3. OpenJUMP: </span><a data-attribute-index="10" href="http://www.openjump.org/" style="background-color: white; border: var(--artdeco-reset-link-border-zero); box-sizing: inherit; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; font-weight: var(--font-weight-bold); line-height: inherit !important; margin: var(--artdeco-reset-base-margin-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); position: relative; text-decoration: var(--artdeco-reset-link-text-decoration-none); touch-action: manipulation; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); word-break: normal;">http://www.openjump.org/</a><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;"> OpenJUMP is an open source Geographic Information System (GIS) written in the Java programming language. It is developed and maintained by a group of volunteers from around the globe. OpenJUMP started as JUMP GIS designed by Vivid Solutions.</span><br style="background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;" /><br style="background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;" /><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;">4. uDig: </span><a data-attribute-index="11" href="https://lnkd.in/gGMF8rnC" style="background-color: white; border: var(--artdeco-reset-link-border-zero); box-sizing: inherit; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; font-weight: var(--font-weight-bold); line-height: inherit !important; margin: var(--artdeco-reset-base-margin-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); position: relative; text-decoration: var(--artdeco-reset-link-text-decoration-none); touch-action: manipulation; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); word-break: normal;">https://lnkd.in/gGMF8rnC</a><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;"> he goal of uDig is to provide a complete Java solution for desktop GIS data access, editing, and viewing.</span><br style="background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;" /><br style="background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;" /><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;">5. MapWindow GIS: </span><a data-attribute-index="12" href="https://www.mapwindow.org/" style="background-color: white; border: var(--artdeco-reset-link-border-zero); box-sizing: inherit; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; font-weight: var(--font-weight-bold); line-height: inherit !important; margin: var(--artdeco-reset-base-margin-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); position: relative; text-decoration: var(--artdeco-reset-link-text-decoration-none); touch-action: manipulation; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); word-break: normal;">https://www.mapwindow.org/</a><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;"> The MapWindow GIS project includes a free and open source desktop geographic information system (GIS) with an extensible plugin architecture, a GIS ActiveX control, and C# GIS programmer library called DotSpatial.</span><br style="background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;" /><br style="background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;" /><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;">6. gvSIG: </span><a data-attribute-index="13" href="https://lnkd.in/gGYvfvHi" style="background-color: white; border: var(--artdeco-reset-link-border-zero); box-sizing: inherit; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; font-weight: var(--font-weight-bold); line-height: inherit !important; margin: var(--artdeco-reset-base-margin-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); position: relative; text-decoration: var(--artdeco-reset-link-text-decoration-none); touch-action: manipulation; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); word-break: normal;">https://lnkd.in/gGYvfvHi</a><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;"> gvSIG is a free and open-source GIS software that provides a range of functionalities for managing, analyzing and visualizing geographic data. It supports multiple file formats and provides advanced GIS analysis and visualization tools.</span><br style="background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;" /><br style="background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;" /><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;">7. Geospatial Data Abstraction Library (GDAL): </span><a data-attribute-index="14" href="https://lnkd.in/gw_S-BZA" style="background-color: white; border: var(--artdeco-reset-link-border-zero); box-sizing: inherit; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; font-weight: var(--font-weight-bold); line-height: inherit !important; margin: var(--artdeco-reset-base-margin-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); position: relative; text-decoration: var(--artdeco-reset-link-text-decoration-none); touch-action: manipulation; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); word-break: normal;">https://lnkd.in/gw_S-BZA</a><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;"> GDAL is a free and open-source software library for reading, writing and transforming geospatial data. It supports a wide range of data formats and provides a comprehensive set of geospatial processing tools.</span><br style="background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;" /><br style="background-color: white; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; line-height: inherit !important;" /><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;">8. Geoserver: </span><a data-attribute-index="15" href="https://lnkd.in/gnPEmH8T" style="background-color: white; border: var(--artdeco-reset-link-border-zero); box-sizing: inherit; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px; font-weight: var(--font-weight-bold); line-height: inherit !important; margin: var(--artdeco-reset-base-margin-zero); overflow-wrap: normal; padding: var(--artdeco-reset-base-padding-zero); position: relative; text-decoration: var(--artdeco-reset-link-text-decoration-none); touch-action: manipulation; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); word-break: normal;">https://lnkd.in/gnPEmH8T</a><span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 14px;"> Geoserver is a free and open-source software for publishing and managing geospatial data over the web. It supports a wide range of data formats and provides a user-friendly interface for managing and serving geographic data over the web.<br /><div class="separator" style="clear: both; text-align: center;"><br /></div></span><div>Credit to <a href="https://www.linkedin.com/posts/vikas-ghadamode-a6a3939b_project-software-database-activity-7027212300948316160-WQw0?utm_source=share&utm_medium=member_desktop" target="_blank">Vikas Ghadamode</a></div>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-52992263740987497302021-07-02T08:33:00.002-07:002021-07-02T08:33:18.696-07:00Windows 11 Insider - Taste of new Windows<span style="font-family: verdana;">I recently subscribed to be one of the Microsoft Insider Program to get the taste of new things from Microsoft. That happen after a friend of mine, whom are strongly supporter of OSS ad being promoting it share in his Facebook on the Windows 11 installation (of which he still unable to install it during this article is written here).
</span><div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQTr8WT2aB4kOtDkqI7qb1z_2BPc9m2mnrYi6NSPV6XZ-CRcM3HHTPvEk-1JfRy3j8h7muZmVi6I4VZOI7P6FiQpK9-8W203aMdqTL7_1C-zhXd75iMeUAy-zP0a8H5_UIMfyhT-mq-6Km/s1920/1.png" style="display: block; padding: 1em 0px; text-align: center;"><span style="font-family: verdana;"><img alt="" border="0" data-original-height="1080" data-original-width="1920" height="267" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQTr8WT2aB4kOtDkqI7qb1z_2BPc9m2mnrYi6NSPV6XZ-CRcM3HHTPvEk-1JfRy3j8h7muZmVi6I4VZOI7P6FiQpK9-8W203aMdqTL7_1C-zhXd75iMeUAy-zP0a8H5_UIMfyhT-mq-6Km/w474-h267/1.png" width="474" /></span></a></div><span style="font-family: verdana;">
To those whom are interested to try, may browse it at <a href="https://blogs.windows.com/windowsexperience/2021/06/24/introducing-windows-11/">Introducing Windows 11 | Windows Experience Blog</a></span><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Rightly before you installed, you might wanna check you computer health by using the tools from Microsoft. Check it out here <a href="https://support.microsoft.com/en-us/windows/check-your-device-performance-and-health-in-windows-security-59d8499d-b6fd-6930-7667-ebf8ae10e08d">Check your device performance and health in Windows Security (microsoft.com)</a></span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">It will indicate weather you are using a PC that could withstand the power of Windows 11 or not.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Next - subscribe for <b>Microsoft Insider Program</b> and do windows update where you have he ability to update to Windows 11 Insider (as I did). If you are in the Microsoft Insider Program, just open the windows update setting. It will indicate that you are ready for windows 11. Click install or update button to start the Windows 11 installation.</span></div><div><span style="font-family: verdana;"><br /></span></div><h3 style="text-align: left;"><span style="font-family: verdana;">And here is my experience using it...</span></h3><div><span style="font-family: verdana;">The installation is much faster compared to previous windows family. It took me about an hour to download it (with my Unifi running at 30Mbps shared with 5 kids for their home-schooling). And then it perform necessary setup. It will took about 10 minutes to complete install (on Corei7 10th Gen Lenovo Yoga with 512GB SSD and 16GB RAM).</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Upon started, you will see Windows 11 page (or like mines - pinky screen) before the login screen / lock screen appear as below. Pretty nice on the design and the image change every time you lock or startup your machine</span></div><div><span style="font-family: verdana;"><br /></span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikL0zp3PvGXCIvWhnht0w0yXH1tJKKB4glTvjzhIvOtpzLmUZuuVEm2VPrLGegHb8UAnMeD9moCvAuyv6qcH4vosL8bK4eVTTYDivi10Tpa0IT0JB6UjUjVJmwvvMJMVAjiMkXdxcHMnmu/s1920/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img border="0" data-original-height="1080" data-original-width="1920" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikL0zp3PvGXCIvWhnht0w0yXH1tJKKB4glTvjzhIvOtpzLmUZuuVEm2VPrLGegHb8UAnMeD9moCvAuyv6qcH4vosL8bK4eVTTYDivi10Tpa0IT0JB6UjUjVJmwvvMJMVAjiMkXdxcHMnmu/w541-h304/2.png" width="541" /></span></a></div><span style="font-family: verdana;"><br /></span><div class="separator" style="clear: both; text-align: center;"><span style="font-family: verdana;"><br /></span></div><span style="font-family: verdana;">Now, you can use password, pin number and if your machine has biometric capability, than you can login using fingerprint or face. I think it start from Windows 10.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Upon login, you will realize that Windows 11 would like you think it as multi-platform OS; meaning you can use it on Laptop, PC, phone and tablet. It also try to imitate Mac OS icon display.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Here is my toolbar</span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMwPqQAui5JhJVqWLjDKgL3_H9wggKvJ2EnYMcogFJgidEa18PvhPQlMyrB2QsKEhi909zdb_7-PDTOGGaJd-xjgX_75LM6xxfcOYAu6OO968ygDe_D1Z86PUJrEV3aOwEYlbkyVdNcPi4//" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="" data-original-height="52" data-original-width="1919" height="28" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMwPqQAui5JhJVqWLjDKgL3_H9wggKvJ2EnYMcogFJgidEa18PvhPQlMyrB2QsKEhi909zdb_7-PDTOGGaJd-xjgX_75LM6xxfcOYAu6OO968ygDe_D1Z86PUJrEV3aOwEYlbkyVdNcPi4/w465-h28/image.png" width="465" /></span></a></div><span style="font-family: verdana;"><br /><br />Your icon may be different than mine, but probably, the first 4 from left shall be the same</span><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDoRxkigY165YuBMRh_G8T7hojMRNRycQzlujwnWMjhd7mspRV2qFEB6bbr0PErmUx10r3CG4FEZi_wFt5CBgmsAGqTSBaGtKSDunwrNs3cXHNhw5i4m4y3-X0zyJJ7eHiFsJ7ixeHL7Qr//" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="" data-original-height="52" data-original-width="367" height="45" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDoRxkigY165YuBMRh_G8T7hojMRNRycQzlujwnWMjhd7mspRV2qFEB6bbr0PErmUx10r3CG4FEZi_wFt5CBgmsAGqTSBaGtKSDunwrNs3cXHNhw5i4m4y3-X0zyJJ7eHiFsJ7ixeHL7Qr//" width="320" /></span></a></div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">On click the first icon, window icon (I guessed), you will get to see the list of pre-install icon or apps that you already had. Kind of interesting, refreshing and modernize ways of browsing things. If you are familiar with Mac, this shall be your forte to search and find things</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-ZxCFxiy9EvR9sUoEJMFaf8q6Z6SuR8C-cl95WXqEwkH9360Vn4DAd-OKu6FY9VGD-KR_8IloCGPTV3ePma7t6GO4cKBR817KAuU500QX8OUC99Rp14gAV15aTlW9ZoBvg5Skft1tWxOo/s780/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img border="0" data-original-height="780" data-original-width="720" height="383" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-ZxCFxiy9EvR9sUoEJMFaf8q6Z6SuR8C-cl95WXqEwkH9360Vn4DAd-OKu6FY9VGD-KR_8IloCGPTV3ePma7t6GO4cKBR817KAuU500QX8OUC99Rp14gAV15aTlW9ZoBvg5Skft1tWxOo/w353-h383/3.png" width="353" /></span></a></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: verdana;"><br /></span></div><span style="font-family: verdana;">On search button, better than previous and clean interface</span><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeyv1oSsge6hAtovpCJys5k5Xd-is3I0mgHXaXSn9b0CC0oA_cx-qJR9qv3TFRG16b6V3oT828XJjegFaRMhyJneQqeBZ_MN8-YHb8jAXkoZ2Y6KQOX5bvRGBE9C7X0V90SPPWIK8CUjpO//" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="" data-original-height="732" data-original-width="813" height="321" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeyv1oSsge6hAtovpCJys5k5Xd-is3I0mgHXaXSn9b0CC0oA_cx-qJR9qv3TFRG16b6V3oT828XJjegFaRMhyJneQqeBZ_MN8-YHb8jAXkoZ2Y6KQOX5bvRGBE9C7X0V90SPPWIK8CUjpO/w357-h321/image.png" width="357" /></span></a></div><span style="font-family: verdana;"><br />The third button is actually for you to have multiple windows which you can flip through. It is exactly similar to MacOS features. Once you add new desktop, it will behave exactly how you manage your Mac multiple desktop/screen. It is confusing at the beginning since the mouse pad on laptop was not design to behave like Mac OS handle multiple desktop.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiElWeDkB8Axr8jZLuFG4hzUbTXU1aGEvmW-BaNkkH73rX4-rehtrXNTuVe_4yYnKXZ_CqKxfLL1LmBJRzCJQo-2YTDq1L-ep2uq4e9cSd3NChY9WPlDt79r0zaQYt2sq7RUOJM3IsCUdQG//" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="" data-original-height="195" data-original-width="567" height="147" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiElWeDkB8Axr8jZLuFG4hzUbTXU1aGEvmW-BaNkkH73rX4-rehtrXNTuVe_4yYnKXZ_CqKxfLL1LmBJRzCJQo-2YTDq1L-ep2uq4e9cSd3NChY9WPlDt79r0zaQYt2sq7RUOJM3IsCUdQG/w428-h147/image.png" width="428" /></span></a></div><span style="font-family: verdana;"><br />The last new button on the toolbar is the widget button. Upon click on the button, you will get to see a list of widget appear on your left screen. I've yet to explore the widget, I think you can certain pre-defined widget</span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9AkA7JrJPngtuYtmevdu3XGfkUO1eLnvZCdMqFvRCDq-BmHTItoA_JfllNewRmhsYj4h9XzgTuVluPYxtUuKshEs6JYm97pLa4x4J9DlehDqaGsqxvuBChhJzaChiuDfsf9XNDhCvMfam//" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="" data-original-height="1061" data-original-width="853" height="330" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9AkA7JrJPngtuYtmevdu3XGfkUO1eLnvZCdMqFvRCDq-BmHTItoA_JfllNewRmhsYj4h9XzgTuVluPYxtUuKshEs6JYm97pLa4x4J9DlehDqaGsqxvuBChhJzaChiuDfsf9XNDhCvMfam/w266-h330/image.png" width="266" /></span></a></div><span style="font-family: verdana;"><br /><br /></span></div><div><span style="font-family: verdana;">Finally, I would like to show the last changes (that I noticed since Window 10 and it was enhanced in Windows 11), the Setting button (previously we used to call Control Panel). Everything was done to harmonize the UIUX for windows on various platform. User will experience a seamless journey for using Windows on laptop, PC or mobile devices.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMpkMKUAo0XtoddoFv-zhW15DpwWtUHtqmVXnms6HD3avOLXt738sGi9nUQ7wgHZCpFOZ7_hobLUVBIZX_okdC28I3Rrv1_e9fKqKBhT-aYQZFrUTnAKS9yes-Y4Mj4tBPsINGae7EAJho//" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="" data-original-height="514" data-original-width="1197" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMpkMKUAo0XtoddoFv-zhW15DpwWtUHtqmVXnms6HD3avOLXt738sGi9nUQ7wgHZCpFOZ7_hobLUVBIZX_okdC28I3Rrv1_e9fKqKBhT-aYQZFrUTnAKS9yes-Y4Mj4tBPsINGae7EAJho/w490-h210/image.png" width="490" /></span></a></div><span style="font-family: verdana;"><br /><br /></span></div><div><span style="font-family: verdana;">That's on the Look and Feel of which I rated 9/10. It was a significant improve from previous version,<b> cleaner and refreshing modernize feeling</b>. The only failure, from my perspective is the behavior which it tries to imitate Mac OS. It is almost there but not there yet. :)</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">By the way, no worries on other applications or tools installed earlier. Upgrading from Windows 10 to Windows 11 won't affect your software and you <b>don't need to reinstall</b> (not like previous OS, you may lost the registry and need to reinstall all software)</span></div><div><span style="font-family: verdana;"><br /></span></div><h3 style="text-align: left;"><span style="font-family: verdana; font-weight: normal;">The Performance</span></h3><div><span style="font-family: verdana;">Lets have a look on the performance of Windows 11. To ensure I'm not bias or wrongly judging it, here is the machine specs used</span></div><div><ul style="text-align: left;"><li><span style="font-family: verdana;">Lenovo Yoga S730 - SMIL Australian version (released in Australia)</span></li><li><span style="font-family: verdana;">Intel Core i7 10th Gen</span></li><li><span style="font-family: verdana;">16GB RAM</span></li><li><span style="font-family: verdana;">512 GB SSD</span></li><li><span style="font-family: verdana;">2 Antivirus installed</span></li></ul></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;"><b>Starting up / Reboot</b> - Windows 10 is much more faster, but the difference is not that significant to me (approximately 3 seconds different)</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;"><b>Upon successfully login</b> - Windows 10 is much more faster, but again, the differences is not that significant to user.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;"><b>Using Edge</b> - here where it start. Opening too many tabs on Edge in Windows 11 causing the memory to stood up eating about 50% of my memory. If you open other Microsoft software such as Teams and Outlook, you can feel that it has slowing down a bit. But for normal user, there won't be much difference that could cause you to lost patient. </span></div><div><span style="font-family: verdana;"><br /></span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX2HzAQP58dvZkkN0YxLc8EsS6IJZX3br8rDxzKUcurwtMmsH1mp1fYZl5o_L9pjHKUVgj47SYR5XOsngxf-y-Urf98GxmW2MNk08TCaL0u1uGqAwKG3hM9I4tHklb08taAf57UFF5FHwY//" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: verdana;"><img alt="" data-original-height="250" data-original-width="645" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX2HzAQP58dvZkkN0YxLc8EsS6IJZX3br8rDxzKUcurwtMmsH1mp1fYZl5o_L9pjHKUVgj47SYR5XOsngxf-y-Urf98GxmW2MNk08TCaL0u1uGqAwKG3hM9I4tHklb08taAf57UFF5FHwY/w490-h190/image.png" width="490" /></span></a></div><span style="font-family: verdana;"><br />The <b>vmmem</b> previously was around 40%. However, in Windows 11, sometimes, it goes to more than 60%. Above is the image of my memory utilization. I have closed Teams and my edge only have 7 tabs. I do feel that Windows 11 yet to able to close properly any program and it takes time to close it.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;"><b>Other Apps / software</b> - Some of the apps, for instance GIMP (I'm using it for image processing), social media desktop apps, and even office are quite slow to open on the first time you trigger it. However, the time difference compared to Windows 10 is not that relevant for you to switch back.</span></div><div><span style="font-family: verdana;"><br /></span><h3 style="text-align: left;"><span style="font-family: verdana; font-size: small;">Will I promote Windows 11?</span></h3><div><span style="font-family: verdana;">My verdict, Go for it when it is officially release. Why? Despite the lagging (which not that significant), you will get an OS that is close to Mac (to Mac user), friendly to Linux and a clean windows interface which will improve your user experience, hence do the work better. I bet that they will improve for official release.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">NOTE: Please make sure you are using SSD and at least 16GB RAM. Else, I would not suggest it. </span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Ok. Have fun trying it. Adois</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Haszeli :)</span></div><div><span style="font-family: verdana;"><br /></span></div><div><br /></div></div>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com2tag:blogger.com,1999:blog-3322146266378349147.post-33585561271344782522020-12-28T20:14:00.002-08:002020-12-28T20:14:17.135-08:00Technical Project Manager - Unifications of the two worlds<p> </p>
<p style=" margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block;"> <a title="View Technical Project Manager - Unifications of the two worlds on Scribd" href="https://www.scribd.com/document/489336822/Technical-Project-Manager-Unifications-of-the-two-worlds#from_embed" style="text-decoration: underline;" >Technical Project Manager - Unifications of the two worlds</a> by <a title="View Haszeli Ahmad's profile on Scribd" href="https://www.scribd.com/user/1164709/Haszeli-Ahmad#from_embed" style="text-decoration: underline;" >Haszeli Ahmad</a> on Scribd</p><iframe class="scribd_iframe_embed" title="Technical Project Manager - Unifications of the two worlds" src="https://www.scribd.com/embeds/489336822/content?start_page=1&view_mode=slideshow&access_key=key-0MgFyHa7vOKhKYBYKl3i" data-auto-height="false" data-aspect-ratio="1.7790927021696252" scrolling="no" id="doc_46875" width="100%" height="600" frameborder="0"></iframe>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0Kuala Lumpur, Federal Territory of Kuala Lumpur, Malaysia3.139003 101.686855-25.171230836178847 66.530605 31.449236836178844 136.84310499999998tag:blogger.com,1999:blog-3322146266378349147.post-48152559063104963282020-06-13T19:51:00.000-07:002020-06-13T19:51:39.853-07:00Caching an Inverse of a Matrix Using R<br /><div><section class="section section--body" name="5967"><div class="section-divider"><hr class="section-divider" /></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><h3 class="graf graf--h3" name="0e44">Caching an Inverse of a Matrix Using R </h3><p class="graf graf--p" name="b278">Matrix inversion is usually a costly computation and there may be some benefit to caching the inverse of a matrix rather than computing it repeatedly.</p><p class="graf graf--p" name="f930">This is an example code to cache an inverse of a matrix which then called if:</p><blockquote class="graf graf--blockquote" name="7618">1. The new matrix computation similar to the previous matrix</blockquote><blockquote class="graf graf--blockquote" name="0c2a">2. Matrix is invertible — Read <a class="markup--anchor markup--blockquote-anchor" data-href="https://deepai.org/machine-learning-glossary-and-terms/invertible-matrix#:~:text=An%20Invertible%20Matrix%20is%20a,in%20the%20matrix%20are%200s." href="https://deepai.org/machine-learning-glossary-and-terms/invertible-matrix#:~:text=An%20Invertible%20Matrix%20is%20a,in%20the%20matrix%20are%200s." rel="noopener" target="_blank">Invertible Matrix</a></blockquote><blockquote class="graf graf--blockquote" name="bd24">3. The structure and content of the new matrix is equal to previous</blockquote></div></div></section><section class="section section--body" name="7c8a"><div class="section-divider"><hr class="section-divider" /></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><p class="graf graf--p" name="ad4d">The program consists of two functions</p><ol class="postList"><li class="graf graf--li" name="8556">A function to cache the matrix and the inverse. It is similar to getter and setter in many programming languages like Java and C.</li><li class="graf graf--li" name="ba90">A function which will be call for the computational process of the matrix</li></ol><p class="graf graf--p" name="29dd">Here are parts of the code:</p><figure class="graf graf--figure" name="7799"><img class="graf-image" data-height="576" data-image-id="1*end632RslYomyBW7LbOrMA.png" data-width="870" height="265" src="https://cdn-images-1.medium.com/max/1200/1*end632RslYomyBW7LbOrMA.png" width="400" /><figcaption class="imageCaption">Setting the matrix</figcaption></figure><figure class="graf graf--figure" name="23c2"><img class="graf-image" data-height="366" data-image-id="1*sdkqQUhNRjLwiQrIrs2Cgw.png" data-width="1104" height="133" src="https://cdn-images-1.medium.com/max/1200/1*sdkqQUhNRjLwiQrIrs2Cgw.png" width="400" /><figcaption class="imageCaption">Setting the inverse matrix</figcaption></figure><figure class="graf graf--figure" name="94fd"><img class="graf-image" data-height="362" data-image-id="1*Cj5Y1kSbWzeAwtH-LDAAJA.png" data-width="866" height="167" src="https://cdn-images-1.medium.com/max/1200/1*Cj5Y1kSbWzeAwtH-LDAAJA.png" width="400" /><figcaption class="imageCaption">Verification on the matrix</figcaption></figure><figure class="graf graf--figure" name="5365"><img class="graf-image" data-height="256" data-image-id="1*NOPYXaI1CYRMAIt3u6FxqA.png" data-width="1024" height="100" src="https://cdn-images-1.medium.com/max/1200/1*NOPYXaI1CYRMAIt3u6FxqA.png" width="400" /><figcaption class="imageCaption">Setting the new inverse</figcaption></figure><p class="graf graf--p" name="a7af">Complete source code is reachable at <a class="markup--anchor markup--p-anchor" data-href="https://github.com/masteramuk/ProgrammingAssignment2" href="https://github.com/masteramuk/ProgrammingAssignment2" rel="noopener" target="_blank">https://github.com/masteramuk/ProgrammingAssignment2</a></p><p class="graf graf--p" name="b19b">If you like the post, <a class="markup--anchor markup--p-anchor" data-href="https://www.buymeacoffee.com/masteramuk" href="https://www.buymeacoffee.com/masteramuk" rel="noopener" target="_blank">do buy me a coffee please :)</a></p></div></div></section></div>
<a href="https://www.buymeacoffee.com/masteramuk" target="_blank"><img alt="Buy Me A Coffee" src="https://cdn.buymeacoffee.com/buttons/default-red.png" style="height: 51px; width: 217px;" /></a>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-8397154603273637232020-06-01T17:05:00.000-07:002020-06-01T17:05:22.615-07:00Reading entire URL content is really easy using R<p class="graf graf--p" name="6e48">In my good old days, reading the entire content of a website is not easy. The process of web scraping and getting the required data requires lots of programming and a few tools. A friend of mine even developed and sold the tool which he called it (during the development) as <em class="markup--em markup--p-em">myrobot</em>. He developed using PHP.</p><p class="graf graf--p" name="b6d9">Now, it is much easier and one of the many ways is using R.</p><p class="graf graf--p" name="40a9">Here are the steps (which requires you to write ONLY two lines of code)</p><ol class="postList"><li class="graf graf--li" name="49af"><strong class="markup--strong markup--li-strong">Connect to the website using URL command</strong><br /><em class="markup--em markup--li-em">con <- url ([the website url], “r”)</em></li><li class="graf graf--li" name="2baa"><strong class="markup--strong markup--li-strong">Then, read the website</strong><br /><em class="markup--em markup--li-em">x <- readLines(con)</em></li><li class="graf graf--li" name="56e8"><strong class="markup--strong markup--li-strong">Do whatever you wish with the data</strong>. In this example, I print out the head of the website and also copy the whole content to a file.<br /><em class="markup--em markup--li-em">head(x)<br />dput(x, “readFromUrlExample.html”)</em></li></ol><p class="graf graf--p" name="f3f4">There you go.</p><figure class="graf graf--figure" name="822b"><img alt="Result of the head(x) function" class="graf-image" data-height="206" data-image-id="1*XLFYgWMTIy9OuTPB1a-K-Q.png" data-width="984" height="134" src="https://cdn-images-1.medium.com/max/1200/1*XLFYgWMTIy9OuTPB1a-K-Q.png" title="Result of the head(x) function" width="640" /></figure><figure class="graf graf--figure" name="09b9"><img alt="Snapshot of the content of the file copied into readFromUrlExamplehtml" class="graf-image" data-height="944" data-image-id="1*-INu_sCoB1gFEm91ryOmIA.png" data-width="2412" height="250" src="https://cdn-images-1.medium.com/max/1200/1*-INu_sCoB1gFEm91ryOmIA.png" title="Snapshot of the content of the file copied into readFromUrlExamplehtml" width="640" /><figcaption class="imageCaption"><br /></figcaption></figure><p class="graf graf--p" name="1797">The sample source code can be retrieved at </p><p class="graf graf--p" name="c878"><a class="markup--anchor markup--p-anchor" data-href="https://github.com/masteramuk/LearnR-Coursera/blob/master/sample-ReadFromUrl.R" href="https://github.com/masteramuk/LearnR-Coursera/blob/master/sample-ReadFromUrl.R" rel="noopener" target="_blank">https://github.com/masteramuk/LearnR-Coursera/blob/master/sample-ReadFromUrl.R</a></p>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-9188182165933408112020-05-29T20:12:00.001-07:002020-05-29T20:12:36.122-07:00Solving Committing Issue between R Studio and Github<section class="section section--body" name="a0e6"><div class="section-divider"><hr class="section-divider" /></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><h3 class="graf graf--h3" name="5c8e">Solving Committing Issue between R Studio and Github</h3><p class="graf graf--p" name="129e">In the normal development process, you will create a repo (the repo in this article is located at Github), followed by the cloning process or download as full directory into your localhost. It is much easier and straightforward. There won’t be any issues especially if your scrum master or release manager is a well trained person in handling branching, merging, and releasing code using git.</p></div></div></section><section class="section section--body" name="b43a"><div class="section-divider"><hr class="section-divider" /></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><p class="graf graf--p" name="17df">However, in most cases, especially for a full-stack developer who did everything on its own, you may encounter an issue if:</p><ol class="postList"><li class="graf graf--li" name="ac81">You created a project in your localhost first using R Studio and set Git as your SVN through your project setting</li><li class="graf graf--li" name="30b2">Then you created the repo at the GitHub</li><li class="graf graf--li" name="d01a">Finally, upon ready, you run command to sync with your GitHub</li></ol><p class="graf graf--p" name="04bf">The following is the command that you use/execute and the result of running the command:</p><blockquote class="graf graf--blockquote" name="b3e4"><font color="#9c27b0" face="courier" size="2">% git remote add origin [your GitHub report url]<br />% git pull origin master<br />warning: no common commits<br />remote: Enumerating objects: 3, done.<br />remote: Counting objects: 100% (3/3), done.<br />remote: Compressing objects: 100% (2/2), done.<br />remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0<br />Unpacking objects: 100% (3/3), done.<br />From [your GitHub report url]<br />* branch master -> FETCH_HEAD<br />* [new branch] master -> origin/master<br /><strong class="markup--strong markup--blockquote-strong">fatal: refusing to merge unrelated histories</strong></font></blockquote><p class="graf graf--p" name="5339">and you see the last sentence .. <strong class="markup--strong markup--p-strong">ERROR</strong></p><section class="section section--body" name="b43a"><div class="section-divider"><hr class="section-divider" /></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><p class="graf graf--p" name="ad00"><span class="markup--strong markup--p-strong">Then, based on google, you followed with the following command</span></p><p class="graf graf--p" name="ad00"><strong class="markup--strong markup--p-strong">% git push -u origin master</strong></p><p class="graf graf--p" name="3882">and you get the following response (or similar)</p><blockquote class="graf graf--blockquote" name="9e9c"><font color="#ba67c8" face="courier" size="2">To [your GitHub report url]<br />! [rejected] master -> master (non-fast-forward)<br />error: failed to push some refs to ‘</font><span style="color: #ba67c8; font-family: courier; font-size: small;">[your GitHub report url]</span><font color="#ba67c8" face="courier" size="2">'<br />hint: Updates were rejected because the tip of your current branch is behind<br />hint: its remote counterpart. Integrate the remote changes (e.g.<br />hint: ‘git pull …’) before pushing again.<br />hint: See the ‘Note about fast-forwards’ in ‘git push — help’ for details.</font></blockquote><p class="graf graf--p" name="2c9e">Next, you try to pull again to get the latest branch based on the previous error by running the command to pull again</p><p class="graf graf--p" name="be0c"><strong class="markup--strong markup--p-strong">% git pull origin master</strong></p><div>And the result is still not promising </div><blockquote class="graf graf--blockquote" name="a0a1"><font color="#ba67c8" face="courier" size="2">From [your GitHub report url]<br />* branch master -> FETCH_HEAD<br />fatal: refusing to merge unrelated histories</font></blockquote><p class="graf graf--p" name="7c5d"><strong class="markup--strong markup--p-strong">What are you missing or wrongly done? I won’t be able to tell you the missing or wrong steps, but I’m sharing your step to overcoming the problem.</strong></p></div></div></section><section class="section section--body" name="db47"><div class="section-divider"><hr class="section-divider" /></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><p class="graf graf--p" name="b255"><strong class="markup--strong markup--p-strong"><font color="#7b1fa2" size="6"><u>STEPS</u></font></strong></p><ol class="postList"><li class="graf graf--li" name="03f0">Go to you localhost directory where you created the project</li><li class="graf graf--li" name="b619">In that directory, you should find a file name <strong class="markup--strong markup--li-strong">.gitignore</strong> & folder <strong class="markup--strong markup--li-strong">.git</strong></li><li class="graf graf--li" name="5d61">Delete both by running rm -fr (if you are using windows, the command might be different)</li><li class="graf graf--li" name="397e">Next, init your project file again by running the command <strong class="markup--strong markup--li-strong">git init</strong>. You shall see the following message appear after executing the command — <em class="markup--em markup--li-em">Initialized empty Git repository in [your project path]</em></li><li class="graf graf--li" name="5811">Followed by adding the remote repo by running the command <strong class="markup--strong markup--li-strong">git remote add origin [your GitHub repo url]</strong>. </li><li class="graf graf--li" name="4390">The followed by <strong class="markup--strong markup--li-strong">git add .</strong> (make sure there is ‘.’ at the end of the command). It tells the git to add all directories in the remote repo to your local.</li><li class="graf graf--li" name="bc32">Followed by <strong class="markup--strong markup--li-strong">git pull origin master</strong>. If succeed, you shall be able to see the following result:<br /><em class="markup--em markup--li-em"><font color="#ba67c8" face="courier" size="2">remote: Enumerating objects: 3, done.<br />remote: Counting objects: 100% (3/3), done.<br />remote: Compressing objects: 100% (2/2), done.<br />remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0<br />Unpacking objects: 100% (3/3), done.<br />From [your GitHub repo url]<br />* branch master -> FETCH_HEAD<br />* [new branch] master -> origin/master</font></em></li><li class="graf graf--li" name="58df">Finally, run <strong class="markup--strong markup--li-strong">git push -u origin master </strong>to verify again. You shall see the following result to indicate it is successfully integrated between your local repo and your Github repo and R Studio shall be able to interact perfectly with GitHub.<br /><em class="markup--em markup--li-em">Branch ‘master’ set up to track remote branch ‘master’ from ‘origin’. Everything up-to-date</em></li></ol><p class="graf graf--p" name="27a0">Once you have done all the steps, go ahead to your R Studio and perform <strong class="markup--strong markup--p-strong">Stage -> Commit -> Commit Message -> Push</strong> to complete the process. Refresh your Github page and you shall see all of your local files at your GitHub repo.</p><p class="graf graf--p" name="fee7">If you find this useful, you can buy me a coffee :) @ <a href="https://www.buymeacoffee.com/masteramuk" target="_blank">https://www.buymeacoffee.com/masteramuk</a></p></div></div></section></div></div></section>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-22658118483548914522020-05-25T01:18:00.003-07:002020-05-25T01:18:58.361-07:00Solving Internet Router Problem - TM Unifi NETIS DL4480V<div class="separator"><h3 class="graf graf--h3" name="5a28" style="margin-left: 1em; margin-right: 1em;"><strong class="markup--strong markup--h3-strong">TM Unifi NETIS DL4480V Connectivity Problem</strong><img class="graf-image" data-height="943" data-image-id="0*UwRf9urhetFwMtle.jpg" data-width="759" height="320" src="https://cdn-images-1.medium.com/max/900/0*UwRf9urhetFwMtle.jpg" width="258" /></h3><h3 class="graf graf--h3" name="5a28" style="margin-left: 1em; margin-right: 1em;"><p class="graf graf--p" name="3e10"><font face="helvetica" size="2" style="font-weight: normal;">After a while, the NETIS DL4480V router provided by TM upon subscribed to TM Streamyx (or TM Unifi lite) will fail to work properly. Your internet connection may be up and down or worst the router itself will frequently disconnected or restart.</font></p><p class="graf graf--p" name="8d8d"><font face="helvetica" size="2" style="font-weight: normal;">Before that happen, in case you need to reset your router, Please DO NOT go to <a class="markup--anchor markup--p-anchor" data-href="https://easyfix.unifi.com.my/" href="https://easyfix.unifi.com.my/" rel="noopener" target="_blank">https://easyfix.unifi.com.my/</a> or <a class="markup--anchor markup--p-anchor" data-href="https://easyfix.unifi.com.my/reconfigure_wifi_netis" href="https://easyfix.unifi.com.my/reconfigure_wifi_netis" rel="noopener" target="_blank">https://easyfix.unifi.com.my/reconfigure_wifi_netis</a></font></p><p class="graf graf--p" name="4cd4"><font face="helvetica" size="2" style="font-weight: normal;">It is useless (worth to try but it won’t be helpful enough).</font></p><p class="graf graf--p" name="8ff7"><font face="helvetica" size="2" style="font-weight: normal;">You can even call their call-center line at 100 and the best guidance you can get is just to confirm your username and password again and resetting your port. It may work or may not work at all. If it works, you still need to tweak on your own (or worst, wait for their technician to drop by, which may take 1, 2, 3 days or even week after you file your report unless you keep bugging them via SOCMED or phone call if you are in dire need of internet connectivity).</font></p><p class="graf graf--p" name="1ea9"><font face="helvetica" size="2" style="font-weight: normal;">Why I stated that you need to tweak on your own. This is because the technician will only install and use the basic setting to set up your router. They won’t do extra miles to ensure that your internet connection is superb. There are a few things you can do to improve your internet connection. Before that, let us do simple tweaking and have a stable connection first.</font></p><p class="graf graf--p" name="42dc"><font face="helvetica" size="2" style="font-weight: normal;">There are few links here that might help you in tweaking it (IF it still able to connect to TM Switches PERMANENTLY, but failed to connect to any website).</font></p><blockquote class="graf graf--blockquote" name="7b0d"><a class="markup--anchor markup--blockquote-anchor" data-href="https://www.youtube.com/watch?v=CX0PXujZbAs" href="https://www.youtube.com/watch?v=CX0PXujZbAs" rel="noopener" target="_blank"><font face="helvetica" size="2" style="font-weight: normal;">1. https://www.youtube.com/watch?v=CX0PXujZbAs</font></a></blockquote><blockquote class="graf graf--blockquote" name="1190"><a class="markup--anchor markup--blockquote-anchor" data-href="https://www.youtube.com/watch?v=Awf4RK5z-V4&app=desktop" href="https://www.youtube.com/watch?v=Awf4RK5z-V4&app=desktop" rel="noopener" target="_blank"><font face="helvetica" size="2" style="font-weight: normal;">2. https://www.youtube.com/watch?v=Awf4RK5z-V4&app=desktop</font></a></blockquote><blockquote class="graf graf--blockquote" name="eefe"><a class="markup--anchor markup--blockquote-anchor" data-href="http://hotspotsystem.com.my/index.php?route=pavblog/blog&blog_id=209" href="http://hotspotsystem.com.my/index.php?route=pavblog/blog&blog_id=209" rel="noopener" target="_blank"><font face="helvetica" size="2" style="font-weight: normal;">3. http://hotspotsystem.com.my/index.php?route=pavblog/blog&blog_id=209</font></a></blockquote><figure class="graf graf--figure graf--layoutOutsetLeft" name="75c7"><img class="graf-image" data-height="812" data-image-id="0*U9OaiqMN9PBjgkuQ.png" data-width="1099" height="236" src="https://cdn-images-1.medium.com/max/900/0*U9OaiqMN9PBjgkuQ.png" width="320" /></figure><p class="graf graf--p" name="c825"><span style="font-weight: normal;"><font face="helvetica" size="2">Well, that shall do it. If the problem persists, just get them to send the technician ASAP and request to change the router. This might be the core problem of failure like mines. That’s it… or you can buy your own router and make sure it is <span class="markup--strong markup--p-strong">VDSL2</span> (for unifi/fiber) ya.</font></span></p><p class="graf graf--p" name="d1e8"><span style="font-weight: normal;"><font face="helvetica" size="2">The final step is to tweak a little bit more to have a better connection. You may not be needed if you think yours is working fine.</font></span></p><blockquote class="graf graf--blockquote" name="92ae"><span style="font-weight: normal;"><font face="helvetica" size="2">1. Disable some of the security features. Please, do this IF you are using it for your OWN purpose and not to setup for openly accessible wifi. You may disable firewall, IDS, IPS setting or tweak it to your own need. To do this, you need to login to your router page at 192.168.1.1 and go to security section (normally at Advance tab)</font></span></blockquote><blockquote class="graf graf--blockquote" name="de5e"><span style="font-weight: normal;"><font face="helvetica" size="2">2. Change the DNS (from automatic to manual) and follow the following few links</font></span></blockquote></h3></div><blockquote style="border: none; margin: 0 0 0 40px; padding: 0px;"><div class="separator"><h3 class="graf graf--h3" name="5a28" style="margin-left: 1em; margin-right: 1em;"><blockquote class="graf graf--pullquote" name="bf07" style="text-align: left;"><span style="font-weight: normal;"><font face="helvetica" size="2">2.1 Standard TM DNS — <a class="markup--anchor markup--pullquote-anchor" data-href="https://community.unifi.com.my/t5/Product-and-Service/DNS-Flag-Day-2019/td-p/18992#" href="https://community.unifi.com.my/t5/Product-and-Service/DNS-Flag-Day-2019/td-p/18992#" rel="noopener" target="_blank">https://community.unifi.com.my/t5/Product-and-Service/DNS-Flag-Day-2019/td-p/18992#</a></font></span></blockquote></h3></div></blockquote><blockquote style="border: none; margin: 0 0 0 40px; padding: 0px;"><blockquote style="border: none; margin: 0 0 0 40px; padding: 0px;"><div class="separator"><h3 class="graf graf--h3" name="5a28" style="margin-left: 1em; margin-right: 1em; text-align: left;"><span style="font-weight: normal;"><font face="helvetica" size="2">2.2 External DNS — <a class="markup--anchor markup--pullquote-anchor" data-href="https://techrakyat.com/tips/best-dns-malaysia/" href="https://techrakyat.com/tips/best-dns-malaysia/" rel="noopener" target="_blank">https://techrakyat.com/tips/best-dns-malaysia/</a> and <a class="markup--anchor markup--pullquote-anchor" data-href="https://www.soyacincau.com/2018/04/02/cloudflare-public-dns-1-1-1-1-faster-internet/" href="https://www.soyacincau.com/2018/04/02/cloudflare-public-dns-1-1-1-1-faster-internet/" rel="noopener" target="_blank">https://www.soyacincau.com/2018/04/02/cloudflare-public-dns-1-1-1-1-faster-internet/</a></font></span></h3></div></blockquote></blockquote><div class="separator"><h3 class="graf graf--h3" name="5a28" style="margin-left: 1em; margin-right: 1em;"><img class="graf-image" data-height="256" data-image-id="0*P33BYNcyA3PYXmnW.png" data-width="256" height="200" src="https://cdn-images-1.medium.com/max/900/0*P33BYNcyA3PYXmnW.png" width="200" /><p class="graf graf--p" name="c630"><span style="font-weight: normal;"><font face="helvetica" size="2">Adios</font></span></p></h3></div><h3 class="graf graf--h3" name="5a28"><strong class="markup--strong markup--h3-strong">TM Unifi NETIS DL4480V Connectivity Problem</strong></h3>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-55040018237220129772020-04-26T21:49:00.000-07:002020-04-26T21:49:02.130-07:00Improving your Telegram Security<section class="section section--body" name="58cc"><div class="section-divider">
<hr class="section-divider" />
</div>
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<div class="graf graf--p" name="959f">
Telegram’s user continues to increase and recently it reaches 400 million user per month</div>
<figure class="graf graf--figure" name="9313"><a href="https://cdn-images-1.medium.com/max/1600/1*1OD-dur0SfK0qnW1a-ZVdw.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" class="graf-image" data-height="672" data-image-id="1*1OD-dur0SfK0qnW1a-ZVdw.png" data-width="824" height="326" src="https://cdn-images-1.medium.com/max/1600/1*1OD-dur0SfK0qnW1a-ZVdw.png" width="400" /></a></figure><div class="graf graf--p" name="c85e">
Since its birth, there are many features added plus friendly API allowing various innovative ideas add-in to its base. </div>
<div class="graf graf--p" name="c85e">
<br /></div>
</div>
</div>
</section><section class="section section--body" name="5eec"><div class="section-divider">
<hr class="section-divider" />
</div>
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<div class="graf graf--p" name="d435">
<br /></div>
<div class="graf graf--p" name="d435">
But, having lots of features may also result in lots of possibilities for hacking. One of the many features that may be wrongly used is the Automatic Media Download. </div>
<div class="graf graf--p" name="d435">
<br /></div>
<div class="graf graf--p" name="d435">
As noob @ beginner, many do not realize it until their phone or PC slow due to disk space has shrunk as telegram keeps on automatically download all files. </div>
<div class="graf graf--p" name="d435">
<br /></div>
<div class="graf graf--p" name="d435">
The most scarier is that the auto-play anything including GIF, video, and audio. All this can be used by hackers to insert a code and inject it upon executed/run by telegram.</div>
<div class="graf graf--p" name="d435">
<br /></div>
<div class="graf graf--p" name="0742">
However, luckily telegram allow us to modify the setting. Here are the steps to change it:</div>
<ol class="postList">
<li class="graf graf--li" name="16d4">Go to your telegram setting and choose Advance</li>
</ol>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><img class="graf-image" data-height="1120" data-image-id="1*QtBPGasAf6nUOsA9WMZ0bg.png" data-width="754" height="400" src="https://cdn-images-1.medium.com/max/1600/1*QtBPGasAf6nUOsA9WMZ0bg.png" style="margin-left: auto; margin-right: auto;" width="269" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: small; text-align: start;">Telegram setting window</span></td></tr>
</tbody></table>
<div class="graf graf--p" name="2c97">
2. At the <strong class="markup--strong markup--p-strong">Advance</strong> screen, go to <strong class="markup--strong markup--p-strong">Automatic media download</strong> section</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><img class="graf-image" data-height="1686" data-image-id="1*9eYSgE_VvWTFd3nLzrsxNQ.png" data-width="738" height="640" src="https://cdn-images-1.medium.com/max/1600/1*9eYSgE_VvWTFd3nLzrsxNQ.png" style="margin-left: auto; margin-right: auto;" width="280" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: small; text-align: start;">In the Advance setting</span></td></tr>
</tbody></table>
<div class="graf graf--p" name="4780">
3. Click <strong class="markup--strong markup--p-strong">In private chats</strong></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><img class="graf-image" data-height="952" data-image-id="1*z4gzTFF9BpEUdnIHyJvGkQ.png" data-width="594" height="400" src="https://cdn-images-1.medium.com/max/1600/1*z4gzTFF9BpEUdnIHyJvGkQ.png" style="margin-left: auto; margin-right: auto;" width="249" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: small; text-align: start;">In automatic media download setting</span></td></tr>
</tbody></table>
<div class="graf graf--p" name="6e41">
4. In the setting, click all the <strong class="markup--strong markup--p-strong">slide-tick</strong> to disable it (or you can choose whichever you want to enable or disable). You can even reduce the size to increase the protection rate.</div>
<div class="graf graf--p" name="6e41">
<br /></div>
<div class="graf graf--p" name="4f7d">
5. Continue the process for all settings within the <strong class="markup--strong markup--p-strong">Automatic media download</strong> section.</div>
<div class="graf graf--p" name="4f7d">
<br /></div>
</div>
</div>
</section><section class="section section--body" name="d3d1"><div class="section-divider">
<hr class="section-divider" />
</div>
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<div class="graf graf--p" name="7c09">
<br /></div>
<div class="graf graf--p" name="7c09" style="text-align: center;">
That’s all.. you are ready to go and you shall be safe.</div>
</div>
</div>
</section>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-83397421571666196362020-04-18T20:50:00.000-07:002020-04-18T20:50:08.230-07:00Tableau Public - Apple Mobility Data and Dark ModeI've been working on 2 visualizations. 1 is based on Apply Mobility Data and the other is based on edited Sample Superstore.<br />
<br />
Check it out here.<br />
<div class="tableauPlaceholder" id="viz1587267974591" style="position: relative;">
<noscript><a href='https://malaysiandeveloper.blogspot.com'><img alt=' ' src='https://public.tableau.com/static/images/Mo/MobilityTrendAnalysisbasedonDatafromApple/Dashboard1/1_rss.png' style='border: none' /></a></noscript><object class="tableauViz" style="display: none;"><param name='host_url' value='https%3A%2F%2Fpublic.tableau.com%2F' /> <param name='embed_code_version' value='3' /> <param name='site_root' value='' /><param name='name' value='MobilityTrendAnalysisbasedonDatafromApple/Dashboard1' /><param name='tabs' value='no' /><param name='toolbar' value='yes' /><param name='static_image' value='https://public.tableau.com/static/images/Mo/MobilityTrendAnalysisbasedonDatafromApple/Dashboard1/1.png' /> <param name='animate_transition' value='yes' /><param name='display_static_image' value='yes' /><param name='display_spinner' value='yes' /><param name='display_overlay' value='yes' /><param name='display_count' value='yes' /></object><br />
Mobility Data based on Apple's mobility data.<br />
<br /></div>
<script type="text/javascript"> var divElement = document.getElementById('viz1587267974591'); var vizElement = divElement.getElementsByTagName('object')[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width='1169px';vizElement.style.height='854px';} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width='1169px';vizElement.style.height='854px';} else { vizElement.style.width='100%';vizElement.style.height='2077px';} var scriptElement = document.createElement('script'); scriptElement.src = 'https://public.tableau.com/javascripts/api/viz_v1.js'; vizElement.parentNode.insertBefore(scriptElement, vizElement); </script>
<br />
<div class="tableauPlaceholder" id="viz1587268014858" style="position: relative;">
<noscript><a href='#'><img alt=' ' src='https://public.tableau.com/static/images/Pa/Paramtest_15865944096250/Dashboard1/1_rss.png' style='border: none' /></a></noscript><object class="tableauViz" style="display: none;"><param name='host_url' value='https%3A%2F%2Fpublic.tableau.com%2F' /> <param name='embed_code_version' value='3' /> <param name='site_root' value='' /><param name='name' value='Paramtest_15865944096250/Dashboard1' /><param name='tabs' value='no' /><param name='toolbar' value='yes' /><param name='static_image' value='https://public.tableau.com/static/images/Pa/Paramtest_15865944096250/Dashboard1/1.png' /> <param name='animate_transition' value='yes' /><param name='display_static_image' value='yes' /><param name='display_spinner' value='yes' /><param name='display_overlay' value='yes' /><param name='display_count' value='yes' /></object><br />
Grid on Dark Mode based on Tableau Sample Superstore (edited version)<br />
<br />
All visual is available at <a href="https://public.tableau.com/profile/nurul.haszeli.ahmad#!/">https://public.tableau.com/profile/nurul.haszeli.ahmad#!/</a><br />
<br />
All dataset is available at data.world @ <a href="https://data.world/haszeliahmad/data-analysis">https://data.world/haszeliahmad/data-analysis</a></div>
<script type="text/javascript"> var divElement = document.getElementById('viz1587268014858'); var vizElement = divElement.getElementsByTagName('object')[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width='1000px';vizElement.style.height='827px';} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width='1000px';vizElement.style.height='827px';} else { vizElement.style.width='100%';vizElement.style.height='727px';} var scriptElement = document.createElement('script'); scriptElement.src = 'https://public.tableau.com/javascripts/api/viz_v1.js'; vizElement.parentNode.insertBefore(scriptElement, vizElement); </script>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-33016619351523344752020-04-11T01:24:00.000-07:002020-04-11T01:24:49.140-07:00Parameter in Tableau - Using available Dimension with additional 'All' for all dataI am writing (and still writing as of this article) a manual to assist me in teaching Tableau. One of the sections is Parameter. There are many examples and guidance provided by Tableau.<br />
<br />You may read/view the following articles/videos for the guide on parameter.<br /><ol>
<li><a href="https://interworks.com/blog/interworks/2012/03/26/how-to-create-and-use-parameters-in-tableau">https://interworks.com/blog/interworks/2012/03/26/how-to-create-and-use-parameters-in-tableau</a></li>
<li><a href="https://help.tableau.com/current/pro/desktop/en-us/parameters_create.htm">https://help.tableau.com/current/pro/desktop/en-us/parameters_create.htm</a></li>
<li><a href="https://help.tableau.com/current/pro/desktop/en-us/changing-views-using-parameters.htm">https://help.tableau.com/current/pro/desktop/en-us/changing-views-using-parameters.htm</a></li>
<li><a href="https://www.youtube.com/watch?v=CrfEJ24FWpQ">https://www.youtube.com/watch?v=CrfEJ24FWpQ</a></li>
<li><a href="https://www.youtube.com/watch?v=rJsaezoTVAE">https://www.youtube.com/watch?v=rJsaezoTVAE</a></li>
<li><a href="https://www.youtube.com/watch?v=opfVV1maNVw">https://www.youtube.com/watch?v=opfVV1maNVw</a></li>
</ol>
<div>
<br /></div>
<div>
The only problem I faced was to have an 'All' data if the user did not select any or wishes to see all data. None of them help. I tried using Action and Filters, yet it only shows based on selection and all show nothing.</div>
<div>
<br /></div>
<div>
That is until I found this solution.</div>
<div>
<br /></div>
<div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-size: 17px; margin-bottom: 20px;">
<span style="font-family: Courier New, Courier, monospace;">IFNULL([FilterField],’Null’) = IF [Paramter] != ‘All’ THEN [Parameter] ELSE IFNULL([FilterField],’Null’) END</span></div>
</div>
<div>
In a more readable, it will be like this</div>
<div>
<br /></div>
<div>
<span style="background-color: white; color: #333333; font-size: 17px;"><span style="font-family: Courier New, Courier, monospace;">IFNULL([FilterField],’Null’) = (</span></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span style="background-color: white; color: #333333; font-size: 17px;"> IF [Parameter] != ‘All’ </span><span style="background-color: white; color: #333333; font-size: 17px;">THEN </span></span></div>
<div>
<span style="background-color: white; color: #333333; font-size: 17px;"><span style="font-family: Courier New, Courier, monospace;"> [Parameter] </span></span></div>
<div>
<span style="background-color: white; color: #333333; font-size: 17px;"><span style="font-family: Courier New, Courier, monospace;"> ELSE </span></span></div>
<div>
<span style="background-color: white; color: #333333; font-size: 17px;"><span style="font-family: Courier New, Courier, monospace;"> IFNULL([FilterField],’Null’) </span></span></div>
<div>
<span style="background-color: white; color: #333333; font-size: 17px;"><span style="font-family: Courier New, Courier, monospace;"> END</span></span></div>
<div>
<span style="background-color: white; color: #333333; font-size: 17px;"><span style="font-family: Courier New, Courier, monospace;">)</span></span></div>
<div>
<span style="background-color: white; color: #333333; font-size: 17px;"><span style="font-family: Courier New, Courier, monospace;"><br /></span></span></div>
<div>
<span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="background-color: white; font-size: 17px;">Step to:</span></span></div>
<div>
<ol>
<li><span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="background-color: white; font-size: 17px;">Create your parameter - In this case, you use any Dimension as the Parameter by choosing a List and choose the list by changing the Fixed section and click on Add Values From.</span></span></li>
<li><span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="background-color: white; font-size: 17px;">Don't forget to add 'All' as one additional list</span></span></li>
<li><span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="background-color: white; font-size: 17px;">Drag the Dimension that you used as the parameter from the Dimensions Card into Filters Card.</span></span></li>
<li><span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="background-color: white; font-size: 17px;">In the Filter option, choose Condition and choose by Formula, and insert the above solution into the formula. </span></span></li>
<li><span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="background-color: white; font-size: 17px;">Don't forget to change the [FilterField] to the Dimension used for the filter and the [Parameter] to your created parameter. </span></span></li>
<li><span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="background-color: white; font-size: 17px;">Do ensure that 'All' is the same as your definition in the parameter (the character case and spelling is equal)</span></span></li>
<li><span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="background-color: white; font-size: 17px;">And that shall do it. You are ready to go.</span></span></li>
</ol>
</div>
<div>
<span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="background-color: white; font-size: 17px;"><br /></span></span></div>
<div>
<span style="color: #333333; font-family: Times, Times New Roman, serif;"><span style="background-color: white; font-size: 17px;">Thanks to the person posted here: </span></span><a href="https://tarsolutions.co.uk/blog/tableau-add-an-all-to-a-parameter/">https://tarsolutions.co.uk/blog/tableau-add-an-all-to-a-parameter/</a></div>
<div>
<br /></div>
<div>
There are also an alternative solution to this and posted here: <a href="http://www.vizwiz.com/2012/09/tableau-tip-adding-all-filter-option-to.html">http://www.vizwiz.com/2012/09/tableau-tip-adding-all-filter-option-to.html</a></div>
masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-10124075320768599192020-04-02T21:44:00.001-07:002020-04-02T21:50:45.973-07:00Data Analysis - Use it !!<div class="separator" style="clear: both; text-align: center;">
</div>
I was reading many developer's site and chat (telegram and whatsapp) when the government stated that they are looking for an app similar to Singapore apps to track the close contact of the Covid-19 positive patient.<br />
<br />
In Singapore, they are using a technology which I presume is Bluetooth to ping close contact within the radiant of the tech and capture necessary data which then used to determine the contact and request them to perform screening. Here are some of the news:<br />
<br />
<ol>
<li><a href="https://www.thestar.com.my/tech/tech-news/2020/03/20/covid-19-singapore-launches-contact-tracing-mobile-app-to-track-coronavirus-infections">https://www.thestar.com.my/tech/tech-news/2020/03/20/covid-19-singapore-launches-contact-tracing-mobile-app-to-track-coronavirus-infections</a></li>
<li><a href="https://www.pymnts.com/coronavirus/2020/app-lets-singapore-track-virus-patients-movements/">https://www.pymnts.com/coronavirus/2020/app-lets-singapore-track-virus-patients-movements/</a></li>
<li><a href="https://www.nst.com.my/news/nation/2020/03/578445/smartphone-app-track-contacts-covid-19-patients">https://www.nst.com.my/news/nation/2020/03/578445/smartphone-app-track-contacts-covid-19-patients</a></li>
<li><a href="https://asia.nikkei.com/Spotlight/Coronavirus/Singapore-urges-citizens-to-sign-up-for-COVID-19-tracking-app">https://asia.nikkei.com/Spotlight/Coronavirus/Singapore-urges-citizens-to-sign-up-for-COVID-19-tracking-app</a></li>
</ol>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.channelnewsasia.com/blueprint/servlet/image/12560852/16x9/1166/777/4c3190a243c15c710885e885349922f7/Af/trace-together-app.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="533" data-original-width="800" height="213" src="https://www.channelnewsasia.com/blueprint/servlet/image/12560852/16x9/1166/777/4c3190a243c15c710885e885349922f7/Af/trace-together-app.jpg" width="320" /></a></div>
<br />
And the apps is available on Google Play and Apple Store<br />
<br />
<ol>
<li><a href="https://play.google.com/store/apps/details?id=sg.gov.tech.bluetrace&hl=en">https://play.google.com/store/apps/details?id=sg.gov.tech.bluetrace&hl=en</a></li>
<li><a href="https://apps.apple.com/sg/app/tracetogether/id1498276074">https://apps.apple.com/sg/app/tracetogether/id1498276074</a></li>
</ol>
<div>
<br /></div>
<div>
And as this article is written, there are many groups including international are coming with various hackathons for apps that can be used to track all COVID-19 patients and their close contact.</div>
<div>
<br /></div>
<div>
In Malaysia, since the announcement, many had gather groups to develop apps.</div>
<div>
<br /></div>
<div>
<a href="https://i.ytimg.com/vi/unK_RuIWGCw/maxresdefault.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="800" height="180" src="https://i.ytimg.com/vi/unK_RuIWGCw/maxresdefault.jpg" width="320" /></a>From my perspective, why must we reinvent the wheel? Why we need to develop many apps when we already have few that are potentially be used for it. </div>
<div>
<br /></div>
<div>
For instance, D'scover by Favioriot was developed for a user to explore whatever the user likes but also close contact that uses the apps. I believed they can just tweak the apps to get close contact for COVID-19 and it is much faster than building and testing new apps. (by the way, this is not promoting them and I don't gain anything from it :))</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://marketingland.com/wp-content/ml-loads/2018/01/location-data-cityscape-ss-1920-800x450.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="450" data-original-width="800" height="180" src="https://marketingland.com/wp-content/ml-loads/2018/01/location-data-cityscape-ss-1920-800x450.jpg" width="320" /></a></div>
<div>
Not just that apps, people have been using Google Maps, Waze, Grab, etc. All these apps collected millions of data and one of these data is people's location and whereabouts. On top of that, all telcos do have their customer's data location and track their movement. I attended the Big Data conference by Bigit a few years ago where one of the telcos presented their data analysis. They have shown the heatmap of their user and based on the communication tower.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://technave.com/data/files/mall/article/201408201558579272.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="345" data-original-width="516" height="213" src="https://technave.com/data/files/mall/article/201408201558579272.jpg" width="320" /></a></div>
<div>
I even had a discussion with a few telcos when they approach us (my previous company) to provide their services and wish for data sharing. I do request to have a set of data of their customer whereabouts too to ensure we can provide efficient services at the moment the customer approaches our station or hub, or at the time they are supposed to do so.</div>
<div>
<br /></div>
<div>
These data can be utilized to find close contact with COVID-19 patients. From these data, we know where they go, their ride and whom the came across with or pass by. Of course, these data are secured by all those companies for customer's safety and PDPA compliance. But, for the sake of government and to combat COVID-19, they can request minimal information limited to the phone number to call the respective COVID-19 contact. </div>
<div>
<br /></div>
<div>
You just need a group of data scientists and data engineers to focus on the massaging and provide the relevant info to the government fast and secure. That's all :)</div>
<div>
<br /></div>
<div>
Don't REINVENT the wheel. Used It and MAXIMIZE the POTENTIAL.</div>
<div>
<br /></div>
<div>
* My personal opinion based on experience. Agreed to disagree :)</div>
<div>
<br /></div>
<div>
<br /></div>
masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-50718351335719080852020-04-02T20:25:00.000-07:002020-04-02T20:25:10.809-07:00Ontology Model for C Overflow Vulnerabilities Attack<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, system-ui, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 18px; line-height: 1.5; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">
Prepared the slide and was hoping to present at a conference. Unfortunately, due to Covid-19, it can only be shared online here.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, system-ui, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 18px; line-height: 1.5; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">
<br style="box-sizing: inherit;" /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, system-ui, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 18px; line-height: 1.5; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">
<a href="https://www.warse.org/static/img/journals/atrans-171993639.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="400" data-original-width="600" height="212" src="https://www.warse.org/static/img/journals/atrans-171993639.jpg" width="320" /></a>I would like to thank all in the slide for making it through especially Saiful who give it all to complete the paper and published it at <a href="http://www.warse.org/IJATCSE/">IJATCSE</a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, system-ui, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 18px; line-height: 1.5; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, system-ui, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 18px; line-height: 1.5; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">
You may access and view the slide at <a href="https://www.slideshare.net/masteramuk/ontology-model-for-c-overflow-vulnerabilities-attack">Slideshare</a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, system-ui, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 18px; line-height: 1.5; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">
<br /></div>
<iframe allowfullscreen="" frameborder="0" height="200px" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/8TFvqOpKYeEhT9" style="border-width: 1px; border: 1px solid #ccc; margin-bottom: 5px; max-width: 100%;" width="395"> </iframe> <br />
<div style="margin-bottom: 5px;">
<strong> <a href="https://www.slideshare.net/masteramuk/ontology-model-for-c-overflow-vulnerabilities-attack" target="_blank" title="Ontology model for c overflow vulnerabilities attack">Ontology model for c overflow vulnerabilities attack</a> </strong> from <strong><a href="https://www.slideshare.net/masteramuk" target="_blank">Nurul Haszeli Ahmad</a></strong> <br />
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, system-ui, "Segoe UI", Roboto, "Helvetica Neue", "Fira Sans", Ubuntu, Oxygen, "Oxygen Sans", Cantarell, "Droid Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Lucida Grande", Helvetica, Arial, sans-serif; font-size: 18px; line-height: 1.5; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">
<span class="ql-hashtag" style="background: transparent; border: 0px; box-sizing: inherit; font-weight: 600; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">#covid19</span> <span class="ql-hashtag" style="background: transparent; border: 0px; box-sizing: inherit; font-weight: 600; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">#overflow</span> <span class="ql-hashtag" style="background: transparent; border: 0px; box-sizing: inherit; font-weight: 600; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">#softwaresecurity</span> <span class="ql-hashtag" style="background: transparent; border: 0px; box-sizing: inherit; font-weight: 600; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">#overflowvulnerabilities</span> <span class="ql-hashtag" style="background: transparent; border: 0px; box-sizing: inherit; font-weight: 600; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">#programanalysis</span> <span class="ql-hashtag" style="background: transparent; border: 0px; box-sizing: inherit; font-weight: 600; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">#staticanalysis</span> <span class="ql-hashtag" style="background: transparent; border: 0px; box-sizing: inherit; font-weight: 600; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">#informationsecurity</span> <span class="ql-hashtag" style="background: transparent; border: 0px; box-sizing: inherit; font-weight: 600; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">#security</span> <span class="ql-hashtag" style="background: transparent; border: 0px; box-sizing: inherit; font-weight: 600; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">#cybersecurity</span> </div>
masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-7081898002268365642020-02-25T23:08:00.001-08:002020-02-25T23:08:37.948-08:00List of User-Agent for browser compatibility<div class="graf graf--p" name="df3a">
There are occasions when you would access some website, it does not support your browser. Either Chrome, Edge, Firefox, etc. This mostly applied to old systems or system that is using old technology, framework or library.</div>
<div class="graf graf--p" name="84bf">
What you can do? You already upgrade your browser and you have installed many browsers and it still does not work properly.</div>
<div class="graf graf--p" name="4efc">
The only solution is to change your user agent setting of the browser.</div>
<div class="graf graf--p" name="7b14">
For instance </div>
<ol class="postList">
<li class="graf graf--li" name="cc99">in Safari: On the menu bar, go to Develop -> User Agent and select from the list. If there are none, choose Other and enter the user agent setting.</li>
<li class="graf graf--li" name="75e1">in chrome: refer <a class="markup--anchor markup--li-anchor" data-href="https://winaero.com/blog/change-user-agent-chrome/" href="https://winaero.com/blog/change-user-agent-chrome/" rel="noopener" target="_blank">https://winaero.com/blog/change-user-agent-chrome/</a></li>
<li class="graf graf--li" name="d840">in firefox: refer <a class="markup--anchor markup--li-anchor" data-href="https://winaero.com/blog/change-user-agent-firefox/" href="https://winaero.com/blog/change-user-agent-firefox/" rel="noopener" target="_blank">https://winaero.com/blog/change-user-agent-firefox/</a></li>
</ol>
<div class="graf graf--p" name="7b82">
Here are the list of user-agent code you can use</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><img class="graf-image" data-height="1146" data-image-id="1*YIPuGRyOtiB6UgRn4RO_2w.png" data-width="1110" height="400" src="https://cdn-images-1.medium.com/max/1600/1*YIPuGRyOtiB6UgRn4RO_2w.png" style="margin-left: auto; margin-right: auto;" width="385" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;">From <a href="https://www.whatismybrowser.com/guides/the-latest-user-agent/internet-explorer">https://www.whatismybrowser.com/guides/the-latest-user-agent/internet-explorer</a></td></tr>
</tbody></table>
<div class="graf graf--p" name="8a27">
For more, check it out at <a class="markup--anchor markup--p-anchor" data-href="https://developers.whatismybrowser.com/useragents/explore/" href="https://developers.whatismybrowser.com/useragents/explore/" rel="noopener" target="_blank">https://developers.whatismybrowser.com/useragents/explore/</a></div>
masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-3767065534423670642020-02-25T19:00:00.000-08:002020-02-25T19:00:40.631-08:00Running Pentaho Data Integration in Mac OS Catalina version 10.15 and above<section class="section section--body" name="eb91"><div class="section-divider">
</div>
</section><section class="section section--body" name="817f"><div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<section class="section section--body" name="eb91"><div class="section-divider">
<section class="section section--body" name="eb91"><div class="section-divider">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyFidAyP1QXKAaZ57ZBTTF356UpDf-IYpjUgsKb9E67C89PBT482NqztqAb2oJqYvKiF0hB9b_dB9AL5wkHOdXQDyNz57Hd_NnjKxnxfVPHkNU6dgRco8XTatAd_6rgw9Cs1pvN_SXmKPK/s1600/Slide1.jpeg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="720" data-original-width="1280" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyFidAyP1QXKAaZ57ZBTTF356UpDf-IYpjUgsKb9E67C89PBT482NqztqAb2oJqYvKiF0hB9b_dB9AL5wkHOdXQDyNz57Hd_NnjKxnxfVPHkNU6dgRco8XTatAd_6rgw9Cs1pvN_SXmKPK/s320/Slide1.jpeg" width="320" /></a></div>
<section class="section section--body" name="eb91"><div class="section-divider">
<hr class="section-divider" />
</div>
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
If you haven’t download the application, you may access here <a class="markup--anchor markup--p-anchor" data-href="https://community.hitachivantara.com/s/article/downloads" href="https://community.hitachivantara.com/s/article/downloads" rel="noopener" target="_blank">https://community.hitachivantara.com/s/article/downloads</a><br />
<br />
<div class="graf graf--p" name="d564">
Running <strong class="markup--strong markup--p-strong">Pentaho Data Integration @ Spoon</strong> in Windows or Linux should be straight-forward. Either click on spoon.bat or spoon.sh or the Data Integration app icon.</div>
<div class="graf graf--p" name="d564">
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0_9T5TZeSi0lsCByzxveGM5zdBfksRRnItxpOZuy03lgUy-779p7e7vA5d3ON_wHczRf1GxHQEJbr8EYQZgra02-AJD8w9-UDUkljPAU2g7AWvJm_tcMnYinPhrm0Pn9WkRAFEYTXD-zM/s1600/Slide3.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="720" data-original-width="1280" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0_9T5TZeSi0lsCByzxveGM5zdBfksRRnItxpOZuy03lgUy-779p7e7vA5d3ON_wHczRf1GxHQEJbr8EYQZgra02-AJD8w9-UDUkljPAU2g7AWvJm_tcMnYinPhrm0Pn9WkRAFEYTXD-zM/s400/Slide3.jpeg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Running Data Integration from the install folder</td></tr>
</tbody></table>
</div>
<div class="graf graf--p" name="fcf6">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8CASCSDDNa0-AP7UMfJAebElQFqJlEboYOSMI5t_lnhOdSUKaoSHrNuRYEWqAca9hqbbHBrR_HHSUanbMLpFd2Ua1b56QMkQ9AsOGt_bYdXNtuK7ejYOX4qrAaYt13WD0VeSdPKxdMlgq/s1600/Slide6.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1280" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8CASCSDDNa0-AP7UMfJAebElQFqJlEboYOSMI5t_lnhOdSUKaoSHrNuRYEWqAca9hqbbHBrR_HHSUanbMLpFd2Ua1b56QMkQ9AsOGt_bYdXNtuK7ejYOX4qrAaYt13WD0VeSdPKxdMlgq/s320/Slide6.jpeg" width="320" /></a>However, for Mac OS, especially with the latest version Catalina which only allowed certified and trusted 64-bit application to run, running Data Integration will be troublesome despite the security for the app was disabled and allowed for the application to run. </div>
<div class="graf graf--p" name="fcf6">
<br /></div>
<div class="graf graf--p" name="fcf6">
<br /></div>
<div class="graf graf--p" name="fcf6">
<br /></div>
<div class="graf graf--p" name="fcf6">
<br /></div>
<div class="graf graf--p" name="fcf6">
<br /></div>
<div class="graf graf--p" name="fcf6">
Some of the guidance on enable security and allow the untrusted app to run are as follow:</div>
<blockquote class="graf graf--blockquote" name="4f59">
<ol>
<li><a class="markup--anchor markup--blockquote-anchor" data-href="https://edpflager.com/?p=3571" href="https://edpflager.com/?p=3571" rel="noopener" target="_blank">https://edpflager.com/?p=3571</a></li>
<li><a class="markup--anchor markup--blockquote-anchor" data-href="https://andres.jaimes.net/1388/running-pentaho-spoon-on-mac-osx/" href="https://andres.jaimes.net/1388/running-pentaho-spoon-on-mac-osx/" rel="noopener" target="_blank">https://andres.jaimes.net/1388/running-pentaho-spoon-on-mac-osx/</a></li>
</ol>
</blockquote>
<div class="graf graf--p" name="ee0b">
I have tried both and after enabling the apps, click on the Data Integration icon still does not work and the application still did not run. </div>
</div>
</div>
</section><section class="section section--body" name="817f"><div class="section-divider">
<hr class="section-divider" />
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="section-inner sectionLayout--insetColumn" style="margin-left: 1em; margin-right: 1em;">
<div class="graf graf--p" name="f2e2" style="text-align: left;">
Lastly, I had to try to run it through the terminal. For OSX Catalina and above, instead of normal bash, Apple brings in <strong class="markup--strong markup--p-strong">zsh</strong> and the behavior is totally different. Plus, if you are a developer and install many Java JDK, running the Pentaho Data Integration will not be as running the normal command. Here is the step to run on the terminal and <strong class="markup--strong markup--p-strong">it works for all OSX</strong>.</div>
<div class="graf graf--p" name="f2e2">
<br /></div>
<div class="graf graf--p" name="f2e2" style="text-align: left;">
1. Open up your terminal</div>
<img border="0" data-original-height="720" data-original-width="1280" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2STvTCuS8-6GOtF_IzxbLpj_klfhLee69iTX0CMltr1Vrjw3DYu0tbNJliGWWcWu0G3micqNQAu6px4lx8IeFM36RljqcSLSWRjOd6mNibVeCZZi3_LBwgL25VeHmBLVAXKaHf0cfi90d/s400/Slide4.jpeg" width="400" /><br /><br /><div style="text-align: left;">
2. Navigate to your install path (where you install or unzip the data integration file)</div>
</div>
<br />
<div class="section-content">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoXORUNQXJx8-bfGWOaIHeSex_DSjkPvEY4_vlQ6gZm0LxauQINRkZttIRStrxBUZV69oRMFTcq1aLGppgzpZX7YuAKfMo0TspiO4DSEtOhMukzhLl5RiKfecxotNe4cAuEU7YXoVhKAoR/s1600/Slide5.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1280" height="224" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoXORUNQXJx8-bfGWOaIHeSex_DSjkPvEY4_vlQ6gZm0LxauQINRkZttIRStrxBUZV69oRMFTcq1aLGppgzpZX7YuAKfMo0TspiO4DSEtOhMukzhLl5RiKfecxotNe4cAuEU7YXoVhKAoR/s400/Slide5.jpeg" width="400" /></a></div>
<div class="section-inner sectionLayout--insetColumn">
<br /></div>
<div class="section-inner sectionLayout--insetColumn">
3. Run <strong class="markup--strong markup--li-strong"><em class="markup--em markup--li-em">./spoon.sh</em></strong> (for bash or old scripting, running spoon.sh shall work without ‘./’)</div>
<div class="section-inner sectionLayout--insetColumn">
<br />4. If you run into an error such as JDK or java runtime error like below, do not panic. This maybe your current java JDK is set to be higher than supported by the application.</div>
<div class="section-inner sectionLayout--insetColumn">
<br /></div>
<div class="section-inner sectionLayout--insetColumn">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000}
span.s1 {font-variant-ligatures: no-common-ligatures}
</style>
<div class="p1">
<span class="s1">(base) MyMek @ MyEpal data-integration % ./spoon.sh</span></div>
<div class="p1">
<span class="s1">OpenJDK 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0</span></div>
<div class="p1">
<span class="s1">-Djava.endorsed.dirs=/Users/masteramuk/Documents/Apps/data-integration/system/karaf/lib/endorsed is not supported. Endorsed standards and standalone APIs</span></div>
<div class="p1">
<span class="s1">in modular form will be supported via the concept of upgradeable modules.</span></div>
<div class="p1">
<span class="s1">Error: Could not create the Java Virtual Machine.</span></div>
<div class="p1">
<span class="s1">Error: A fatal exception has occurred. Program will exit.</span></div>
<div class="p1">
<span class="s1"><br /></span></div>
5. First, check your JDK version. Open a new terminal as the command need to be executed from the base (unless you set the JDK in your profile which may cause problem to run multiple JDK later). Run command java -version. You shall have similar to below. In my laptop, the current JDK version is set to JDK version 10.</div>
<div class="section-inner sectionLayout--insetColumn">
<br /></div>
<div class="section-inner sectionLayout--insetColumn">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000}
span.s1 {font-variant-ligatures: no-common-ligatures}
</style>
<div class="p1">
<span class="s1">(base) MyMek @ MyEpal data-integration % java -version</span></div>
<div class="p1">
<span class="s1">openjdk version "10.0.2" 2018-07-17</span></div>
<div class="p1">
<span class="s1">OpenJDK Runtime Environment AdoptOpenJDK (build 10.0.2+13)</span></div>
<div class="p1">
<span class="s1">OpenJDK 64-Bit Server VM AdoptOpenJDK (build 10.0.2+13, mixed mode)</span></div>
<div class="p1">
<span class="s1"><br /></span></div>
</div>
<div class="section-inner sectionLayout--insetColumn">
6. Make sure you have multiple java JDK installed if you need to use the existing JDK version for your ‘other’ development. Refer <a class="markup--anchor markup--li-anchor" data-href="https://www.devdungeon.com/content/install-multiple-jdk-windows-java-development" href="https://www.devdungeon.com/content/install-multiple-jdk-windows-java-development" rel="noopener" target="_blank">https://www.devdungeon.com/content/install-multiple-jdk-windows-java-development</a> to install multiple JDK. Refer here <a class="markup--anchor markup--li-anchor" data-href="https://www.jenv.be/" href="https://www.jenv.be/" rel="noopener" target="_blank">https://www.jenv.be/</a> to install <strong class="markup--strong markup--li-strong">jenv</strong> command tool.</div>
<div class="section-inner sectionLayout--insetColumn">
<br />7. For my laptop, I have a few versions of JDK and using <strong class="markup--strong markup--li-strong">jenv</strong>, I can set the selected JDK for <strong class="markup--strong markup--li-strong">global</strong> or <strong class="markup--strong markup--li-strong">local</strong> (only applied to the folder where we run <strong class="markup--strong markup--li-strong"><em class="markup--em markup--li-em">jenv local</em></strong> command). Run <strong class="markup--strong markup--li-strong"><em class="markup--em markup--li-em">jenv version</em></strong> to check on current JDK and <strong class="markup--strong markup--li-strong"><em class="markup--em markup--li-em">jenv versions</em></strong> to list all JDK install. </div>
<div class="section-inner sectionLayout--insetColumn">
<br /></div>
<div class="section-inner sectionLayout--insetColumn">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000}
span.s1 {font-variant-ligatures: no-common-ligatures}
</style>
<div class="p1">
<span class="s1">(base) MyMek @ MyEpal data-integration % jenv versions</span></div>
<div class="p1">
<span class="s1"><span class="Apple-converted-space"> </span>system</span></div>
<div class="p1">
<span class="s1"><span class="Apple-converted-space"> </span>1.8</span></div>
<div class="p1">
<span class="s1"><span class="Apple-converted-space"> </span>1.8.0.232</span></div>
<div class="p1">
<span class="s1">* 10.0 (set by /Users/masteramuk/Documents/Apps/data-integration/.java-version)</span></div>
<div class="p1">
<span class="s1"><span class="Apple-converted-space"> </span>10.0.2</span></div>
<div class="p1">
<span class="s1"><span class="Apple-converted-space"> </span>13.0</span></div>
<div class="p1">
<span class="s1"><span class="Apple-converted-space"> </span>13.0.1</span></div>
<div class="p1">
<span class="s1"><span class="Apple-converted-space"> </span>9</span></div>
<div class="p1">
<span class="s1"><span class="Apple-converted-space"> </span>openjdk64-1.8.0.232</span></div>
<div class="p1">
<span class="s1"><span class="Apple-converted-space"> </span>openjdk64-10.0.2</span></div>
<div class="p1">
<span class="s1"><span class="Apple-converted-space"> </span>openjdk64-13.0.1</span></div>
<div class="p1">
<span class="s1"><span class="Apple-converted-space"> </span>openjdk64-9</span></div>
<div class="section-inner sectionLayout--insetColumn">
<br /></div>
<div style="text-align: center;">
<b>As of this manual written, Pentaho Data Integration @ Spoon supports up to JDK 1.8.</b></div>
<div class="section-inner sectionLayout--insetColumn">
<br /></div>
8. Use jenv to change the jdk to 1.9. Run command <strong class="markup--strong markup--li-strong">jenv local [JDK number]</strong>. In this example, I execute <strong class="markup--strong markup--li-strong"><em class="markup--em markup--li-em">jenv local 1.8.0.232</em></strong>.<br />9. Finally, run again ./spoon.sh. The application shall run.<br /><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAlK39b6nKMTku2TNx8usJakGHlFZj7h2Wt2H-Q94_cmRZzPz7jC-omnZupaezZZPk3pYM3eK4ry-x5WbEHhcZBY0I6eaUYcnrAqavxUJJjmX-FHdjPLW6tUOo9nXIQHnZGfpdpLAUcki_/s1600/Slide10.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto; text-align: center;"><img border="0" data-original-height="720" data-original-width="1280" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAlK39b6nKMTku2TNx8usJakGHlFZj7h2Wt2H-Q94_cmRZzPz7jC-omnZupaezZZPk3pYM3eK4ry-x5WbEHhcZBY0I6eaUYcnrAqavxUJJjmX-FHdjPLW6tUOo9nXIQHnZGfpdpLAUcki_/s400/Slide10.jpeg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Running</td></tr>
</tbody></table>
<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrGUmaWyLXT0AW6Cy3BOapwYmG0xzS7vskOnF9vBxhziR9hwSSuOFJJLP-tE7t-Beq3P2YbGjfH98aPuNWkUrTQjPn-sMUQ8a7vaO6D6KK2mXvBNybApAa3wjeQBvlIQcbBL1EXoMkWh_q/s1600/Slide11.jpeg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="720" data-original-width="1280" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrGUmaWyLXT0AW6Cy3BOapwYmG0xzS7vskOnF9vBxhziR9hwSSuOFJJLP-tE7t-Beq3P2YbGjfH98aPuNWkUrTQjPn-sMUQ8a7vaO6D6KK2mXvBNybApAa3wjeQBvlIQcbBL1EXoMkWh_q/s400/Slide11.jpeg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Opening the application</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEQIg6S7Ih0rMACUWkTgpDX6wtIM8T9hhd7JoJmrHK_Wfm01IQPYQFsKJJek2dLy9jZIKQap7MExzKYGolX9RA9f5G3T6brjyiVyKdBv7-zS3UHzBTlTOb4U5bJDjD4f40mhKHKCqHSrEw/s1600/Slide12.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="720" data-original-width="1280" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEQIg6S7Ih0rMACUWkTgpDX6wtIM8T9hhd7JoJmrHK_Wfm01IQPYQFsKJJek2dLy9jZIKQap7MExzKYGolX9RA9f5G3T6brjyiVyKdBv7-zS3UHzBTlTOb4U5bJDjD4f40mhKHKCqHSrEw/s400/Slide12.jpeg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The main screen</td></tr>
</tbody></table>
<div>
<br /></div>
</div>
</div>
</section></div>
</section></div>
</section></div>
</div>
</section>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-3354699516451468642020-01-29T00:39:00.000-08:002020-01-29T00:39:39.850-08:00List of available data set for Data ScientistI am exploring on data related to 2019nCoV and found the following list of dataset that can be used for data scientist, data scientist to be, student, etc to explore. Check it out<br />
<br />
<br />
<ol>
<li><a href="https://data.world/">https://data.world/</a></li>
<li><a href="https://quantumstat.com/dataset/dataset.html">https://quantumstat.com/dataset/dataset.html</a></li>
<li><a href="https://www.ncbi.nlm.nih.gov/labs/virus/vssi/#/virus?SeqType_s=Nucleotide&VirusLineage_ss=Wuhan%20seafood%20market%20pneumonia%20virus,%20taxid:2697049">https://www.ncbi.nlm.nih.gov/labs/virus/vssi/#/virus?SeqType_s=Nucleotide&VirusLineage_ss=Wuhan%20seafood%20market%20pneumonia%20virus,%20taxid:2697049</a></li>
<li><a href="https://www.ncbi.nlm.nih.gov/genbank/2019-ncov-seqs/?utm_campaign=wuhan_nCoV&utm_source=twitter&utm_medium=referral">https://www.ncbi.nlm.nih.gov/genbank/2019-ncov-seqs/?utm_campaign=wuhan_nCoV&utm_source=twitter&utm_medium=referral</a></li>
<li><a href="https://www.ncbi.nlm.nih.gov/nuccore/MN908947,MN970003,MN970004,MN938384,MN938385,MN938386,MN938387,MN938388,MN938389,MN938390,MN975262,MN975263,MN975264,MN975265,MN975266,MN975267,MN975268,MN985325,MN988713,MN994467,MN994468,MN997409,MN988668,MN988669">https://www.ncbi.nlm.nih.gov/nuccore/MN908947,MN970003,MN970004,MN938384,MN938385,MN938386,MN938387,MN938388,MN938389,MN938390,MN975262,MN975263,MN975264,MN975265,MN975266,MN975267,MN975268,MN985325,MN988713,MN994467,MN994468,MN997409,MN988668,MN988669</a></li>
<li><a href="https://researchguides.uic.edu/c.php?g=252253&p=1683071">https://researchguides.uic.edu/c.php?g=252253&p=1683071</a></li>
<li><a href="https://archive.org/details/2019-search-engine-keyphrases.json">https://archive.org/details/2019-search-engine-keyphrases.json</a></li>
</ol>
<br />
<br />
or you can just use google and search the entire internet through the engine<br />
<a href="https://datasetsearch.research.google.com/">https://datasetsearch.research.google.com/</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://miro.medium.com/max/760/1*4VeVcY_U64yVHGvBXTTQIg.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="400" data-original-width="760" height="210" src="https://miro.medium.com/max/760/1*4VeVcY_U64yVHGvBXTTQIg.png" width="400" /></a></div>
masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-59497358197395816872020-01-13T20:49:00.001-08:002020-01-13T20:49:49.039-08:00Disruptive UI/UX - The new interactive design of a websiteThe faces of a website have evolved drastically from normal static one page to multiple page interactive and so on. With Big Data and ML, comes chatbot and more interactive website which more customer engaging concept.<br />
<br />
It no time, we will definitely view a website through the Augmented Reality concept. Just read the name on a billboard, and then you will get to see the whole company profile in AR mode. Well, while waiting for this to happen, let us take a look at few revolutionize user engaging designs of a website.<br />
<br />
As shared by Bruno Simon at <a href="https://bruno-simon.com/">https://bruno-simon.com/</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj040KPo4kS-ZRcF9tjmXjo_fNTxjCyH-cbE4m10GGic24FKGRwBylQO86YZvOENh2ETZ464Jl9uxSVGCiJ78RHlS97d1fc26PP_1O0SRLE9PfURaQhuIuAsS4tpUslfPKcSGr8Ciivyh3q/s1600/brunosimon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="819" data-original-width="1600" height="324" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj040KPo4kS-ZRcF9tjmXjo_fNTxjCyH-cbE4m10GGic24FKGRwBylQO86YZvOENh2ETZ464Jl9uxSVGCiJ78RHlS97d1fc26PP_1O0SRLE9PfURaQhuIuAsS4tpUslfPKcSGr8Ciivyh3q/s640/brunosimon.png" width="640" /></a></div>
<br />
Whom also the master of behind many 'abnormal' website like <a href="https://www.orano.group/experience/innovation/en">Orano</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEietM_JxSQbpHFQAU-ofraAESr10AGM4S2ZKka-Wfs4BkRsvPg1dqCW1iCoa1aeG9hFN9g41X3nWsLBHx8IHwEU_nuC5fTf8dy9sLLA5pbazETZ8RnykRYMaanjpyFBwJ_DTWIU2U6hfgct/s1600/orano.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="793" data-original-width="1600" height="197" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEietM_JxSQbpHFQAU-ofraAESr10AGM4S2ZKka-Wfs4BkRsvPg1dqCW1iCoa1aeG9hFN9g41X3nWsLBHx8IHwEU_nuC5fTf8dy9sLLA5pbazETZ8RnykRYMaanjpyFBwJ_DTWIU2U6hfgct/s400/orano.png" width="400" /></a></div>
<br />
<br />
and <a href="https://prior.co.jp/discover/en">Prior Holding</a><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMoaBgqMVhYPm1nhZ-2-S8HKiPn7gGe6CfOuE5aVWTEqqNH-nQQ02q9oKe9rmf-Kao20BkcEOwvjwKztmxUb_XMj7Qy_oJxurlyhk9o1wqw6YSw672oZAPUhXHBGf3x2eRR_f8gLwMK-OE/s1600/prior.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="940" data-original-width="1600" height="233" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMoaBgqMVhYPm1nhZ-2-S8HKiPn7gGe6CfOuE5aVWTEqqNH-nQQ02q9oKe9rmf-Kao20BkcEOwvjwKztmxUb_XMj7Qy_oJxurlyhk9o1wqw6YSw672oZAPUhXHBGf3x2eRR_f8gLwMK-OE/s400/prior.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Go ahead browse the website and you will feel different.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />
<br />masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-3014649107221215982020-01-13T18:25:00.001-08:002020-01-13T18:25:43.232-08:00Codility - PermCheck (Check whether array A is a permutation)<section class="section section--body" name="3af9"><div class="section-divider">
<hr class="section-divider" />
</div>
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<div class="graf graf--p" name="89f8">
This is the second lesson in <a class="markup--anchor markup--p-anchor" data-href="https://app.codility.com" href="https://app.codility.com/" rel="noopener" target="_blank">Codility</a>. Given an array of integer N, you need to find if the given array is a permutation array or perfect array in sequence (if all numbers are sorted accordingly). The full explanation of the lesson is <a class="markup--anchor markup--p-anchor" data-href="https://app.codility.com/programmers/lessons/4-counting_elements/perm_check/" href="https://app.codility.com/programmers/lessons/4-counting_elements/perm_check/" rel="noopener" target="_blank">here</a>.</div>
<div class="graf graf--p" name="89f8">
<br /></div>
<div class="graf graf--p" name="4ef1">
It does not take me long compared to the previous lesson. I scored 100% on the first trial and here is the explanation of my code.</div>
</div>
</div>
</section><section class="section section--body" name="f62f"><div class="section-divider">
<hr class="section-divider" />
</div>
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<div class="graf graf--p" name="5c3c">
Since it already stated that the array starts from a positive number, I just set the expected int is 1 and missing to 0</div>
<blockquote class="graf graf--blockquote" name="34da">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">int expectedInt = 1;<br />int missingInt = 0;</span></blockquote>
<div class="graf graf--p" name="69d0">
Then, the array is sorted accordingly. I’m using <b><i>java.util.Arrays</i></b> library</div>
<blockquote class="graf graf--blockquote" name="b4af">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> Arrays.sort(A);</span></blockquote>
<div class="graf graf--p" name="238e">
To find the missing int, just loop the sorted array and find the first occurrence of the missing int.</div>
<blockquote class="graf graf--blockquote" name="2354">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">for (int x : A){ //loop to find the missing int<br /> if (x == expectedInt){<br /> expectedInt++;<br /> } else {<br /> missingInt = expectedInt;<br /> }<br /> }</span></blockquote>
</div>
</div>
</section><section class="section section--body" name="4eb2"><div class="section-divider">
<hr class="section-divider" />
</div>
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<div class="graf graf--p" name="2a59">
This code is not perfected yet as it will continue to search despite it found the missing int. I should further improve it later. However, for codility purposes, it stops here. You can further enhance the code by implementing the <strong class="markup--strong markup--p-strong"><em class="markup--em markup--p-em">break</em></strong> clause once found the first missing int.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY4NTFLqljlGetK_rGB6BuYQDNAkHNQqHQlIKFI6gA4SF0BMoJpZ2PI-I9FYrHpyvw5dDAgsOaVGpkB-DDyCalDU3f8_iDq-t4ba4IoCsy6OGwDIWYe357Y5pPiwaX6w58kc8Wy510-c0p/s1600/Perm1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="459" data-original-width="504" height="363" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY4NTFLqljlGetK_rGB6BuYQDNAkHNQqHQlIKFI6gA4SF0BMoJpZ2PI-I9FYrHpyvw5dDAgsOaVGpkB-DDyCalDU3f8_iDq-t4ba4IoCsy6OGwDIWYe357Y5pPiwaX6w58kc8Wy510-c0p/s400/Perm1.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The code</td></tr>
</tbody></table>
<div class="graf graf--p" name="9222">
And here is the result. Ya, it shows 2 minutes; that is because I test it again to snapshot the result :). In actual, for a few trials, it took me around 2 hours to perfect it and scored 100%</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiT_3RsAhGAlRpqqfNgctCFJuP8VmgRV6n2u7nkt14xVZ3PZ7Q895fB_GeFnjnApyLPsY7FrFtsd-915R601Tmj_SXlRlPtjX0SIxnHrniNA50PSwVUsIOo8pFyRoECD7wPjNfR_KIxYaa/s1600/Perm2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="244" data-original-width="1024" height="95" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiT_3RsAhGAlRpqqfNgctCFJuP8VmgRV6n2u7nkt14xVZ3PZ7Q895fB_GeFnjnApyLPsY7FrFtsd-915R601Tmj_SXlRlPtjX0SIxnHrniNA50PSwVUsIOo8pFyRoECD7wPjNfR_KIxYaa/s400/Perm2.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Result</td></tr>
</tbody></table>
<div class="section-divider">
<hr class="section-divider" />
</div>
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<div class="graf graf--p" name="2a59">
You can download the full code at</div>
</div>
</div>
<div class="graf graf--p" name="be93">
</div>
<ol>
<li>Bitbucket — git clone <a class="markup--anchor markup--p-anchor" data-href="https://masteramuk@bitbucket.org/fullstacksdev/codility-permcheck.git" href="https://masteramuk@bitbucket.org/fullstacksdev/codility-permcheck.git" rel="noopener" target="_blank">https://masteramuk@bitbucket.org/fullstacksdev/codility-permcheck.git</a></li>
<li>Github — git clone <a class="markup--anchor markup--p-anchor" data-href="https://github.com/masteramuk/codility-lessoncode.git" href="https://github.com/masteramuk/codility-lessoncode.git" rel="nofollow noopener" target="_blank">https://github.com/masteramuk/codility-lessoncode.git</a></li>
</ol>
<br />
<div class="graf graf--p" name="2a59">
<br /></div>
<div class="graf graf--p" name="2a59">
<br /></div>
<div class="graf graf--p" name="2a59">
<br /></div>
<div class="graf graf--p" name="2a59">
<br /></div>
</div>
</div>
</section>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-18523707652490759082020-01-13T02:28:00.000-08:002020-01-13T02:28:47.161-08:00Codility - FrogRiverOne (Find the earliest time when a frog can jump to the other side of a river)<div class="graf graf--p" name="26df">
This is the fourth lesson in <a class="markup--anchor markup--p-anchor" data-href="https://app.codility.com" href="https://app.codility.com/" rel="noopener" target="_blank">Codility</a>. You need to find the fastest (earliest) time possible for a frog to start jumping towards the other side of the river. You will be given an array that reflecting the position of jumping/landing point for the frog. </div>
<div class="graf graf--p" name="26df">
<br /></div>
<div class="graf graf--p" name="b872">
The frog will start to jump when all landing point is in the right position. Two input is given; X as the final jumping position and Y array of integer. For each element in the array, every index is considered as seconds. You need to arrange the number in the array and trigger when all are in sequence with X as the last element.</div>
<div class="graf graf--p" name="b872">
</div>
<section class="section section--body" name="c412"><div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<div class="graf graf--p graf--empty">
<br /></div>
</div>
</div>
</section><section class="section section--body" name="a657"><div class="section-divider">
<hr class="section-divider" />
</div>
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<div class="graf graf--p" name="5e23">
It took me another 1 full day and many try-n-error to get it perfect 100%</div>
<div class="graf graf--p" name="5e23">
<br /></div>
<div class="graf graf--p" name="231d">
In the beginning, I’m using 2 Array of Integer as shown below. There are few test cases that failed because the time taken to process is more than the limit given.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6V1x82F1k4m0foCoxyuP3F8xETSqyYtl-pVDaW8THoV0idqtRNXXfgsazxFVXbdzTMRK1LgAtk0JYm8x0HLMsGtneQG1njbv3himzpzK8gvuKXe-m8I-HflgfdxKpHMfdVqK-cV7QdXah/s1600/frogcross1+copy.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="600" data-original-width="447" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6V1x82F1k4m0foCoxyuP3F8xETSqyYtl-pVDaW8THoV0idqtRNXXfgsazxFVXbdzTMRK1LgAtk0JYm8x0HLMsGtneQG1njbv3himzpzK8gvuKXe-m8I-HflgfdxKpHMfdVqK-cV7QdXah/s400/frogcross1+copy.png" width="297" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><div class="graf graf--p" name="cab2">
100% accuracy but the overall score is 18%</div>
</td></tr>
</tbody></table>
<div class="graf graf--p" name="7874">
With an improvement in the code, I managed to improve the overall score to 54%. I managed to reduce some of the performance issues.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSrBVXHjKxFOijSX30UUVSStWD6-KW-jlieV9OWkeQV2pgve0wps6KPL_Wm62iy_rkvHV1rzYxTotUCoGXIqJsZiEbl3BSN6UuVpvoOZx3zvdK7xMqNJ9FFxoVdvI0NF9ylqXFOYgZje4v/s1600/frogcross2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="467" data-original-width="700" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSrBVXHjKxFOijSX30UUVSStWD6-KW-jlieV9OWkeQV2pgve0wps6KPL_Wm62iy_rkvHV1rzYxTotUCoGXIqJsZiEbl3BSN6UuVpvoOZx3zvdK7xMqNJ9FFxoVdvI0NF9ylqXFOYgZje4v/s400/frogcross2.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">100% accuracy but overall score is 54%</td></tr>
</tbody></table>
<div class="graf graf--p" name="7874">
It looks like <b><i>Array.copyOf</i></b> and <b><i>Arrays.stream</i></b> do take a longer time to process.</div>
<div class="graf graf--p" name="7874">
<br /></div>
<div class="graf graf--p" name="7874">
Another improvement has lessened the length of the code and improve the overall score to 63%</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG_EIfFjhpS9h3YY0SI2iZHE3gsMX5RMneGROWWocJLjw5wNFqaJAR62xSJKYSXEymE3kex7UgsaTEV0QPBQsUFZUbnf5gFzWWcoT1Lx-Iv6AUMwR8eA-siaLNsBzzTvEB27u5PwZC4Thn/s1600/frogcross3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="490" data-original-width="501" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG_EIfFjhpS9h3YY0SI2iZHE3gsMX5RMneGROWWocJLjw5wNFqaJAR62xSJKYSXEymE3kex7UgsaTEV0QPBQsUFZUbnf5gFzWWcoT1Lx-Iv6AUMwR8eA-siaLNsBzzTvEB27u5PwZC4Thn/s320/frogcross3.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">63% overall score</td></tr>
</tbody></table>
<div class="graf graf--p" name="036d">
The code above simply set the C array to value one of the position indexes of A. Here are the list of test that it fails</div>
<blockquote class="graf graf--blockquote" name="e0bf">
▶medium_range<br /> arithmetic sequences, X = 5,000✘TIMEOUT ERROR<br /> running time: 0.112 sec., time limit: 0.100 sec.<br /> 1.0.112 sTIMEOUT ERROR, running time: 0.112 sec., time limit: 0.100 sec.<br /> ▶large_random<br /> 10 and 100 random permutation, X = ~10,000✘TIMEOUT ERROR<br /> running time: 1.128 sec., time limit: 0.880 sec.<br /> 1.1.128 sTIMEOUT ERROR, running time: 1.128 sec., time limit: 0.880 sec.<br /> 2.0.200 sOK<br /> ▶large_permutation<br /> permutation tests✘TIMEOUT ERROR<br /> running time: 1.716 sec., time limit: 0.880 sec.<br /> 1.1.716 sTIMEOUT ERROR, running time: 1.716 sec., time limit: 0.880 sec.<br /> 2.6.000 sTIMEOUT ERROR, Killed. Hard limit reached: 6.000 sec.<br /> ▶large_range<br /> arithmetic sequences, X = 30,000✘TIMEOUT ERROR<br /> Killed. Hard limit reached: 6.000 sec.<br /> 1.6.000 sTIMEOUT ERROR, Killed. Hard limit reached: 6.000 sec.</blockquote>
I changed my strategy. Instead of using a normal Array of integer, I implement <b><i>List</i></b> & <b><i>ArrayList</i></b>.<br />
<div class="graf graf--p" name="7874">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3qQmjg7ipBz7bECTNXUW0UVDDLpvudR6uCQ7kFWJQYA9f7X4On8xQLM5El1oQav7iA4Wz1n5EhZ7JHzBWXptxudv3J9QAuKz6xKN5iYpb_EKNTJpboKNsSl753WpSVbTqEG2IrxbqqlcI/s1600/frogcross4.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="385" data-original-width="496" height="310" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3qQmjg7ipBz7bECTNXUW0UVDDLpvudR6uCQ7kFWJQYA9f7X4On8xQLM5El1oQav7iA4Wz1n5EhZ7JHzBWXptxudv3J9QAuKz6xKN5iYpb_EKNTJpboKNsSl753WpSVbTqEG2IrxbqqlcI/s400/frogcross4.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Bad improvement - 54% overall</td></tr>
</tbody></table>
<div class="graf graf--p" name="b465">
Instead of getting better, it is getting worse. I google on it and found that List do have performance issues and found few suggestions on it. Either use Hashmap, HashSet, TreeSet or GapList. </div>
<div class="graf graf--p" name="b465">
<br /></div>
<div class="graf graf--p" name="c685">
I tried the GapList first (see some explanation here <a class="markup--anchor markup--p-anchor" data-href="https://dzone.com/articles/gaplist-lightning-fast-list" href="https://dzone.com/articles/gaplist-lightning-fast-list" rel="noopener" target="_blank">https://dzone.com/articles/gaplist-lightning-fast-list</a> and <a class="markup--anchor markup--p-anchor" data-href="https://github.com/GabrielRStella/Utility/blob/master/src/org/magicwerk/brownies/collections/GapList.java" href="https://github.com/GabrielRStella/Utility/blob/master/src/org/magicwerk/brownies/collections/GapList.java" rel="noopener" target="_blank">https://github.com/GabrielRStella/Utility/blob/master/src/org/magicwerk/brownies/collections/GapList.java</a>)</div>
<div class="graf graf--p" name="c685">
<br /></div>
<div class="graf graf--p" name="15b1">
I do improve the process on my laptop and surprisingly, it was way faster than List or ArrayList. Unfortunately, Codility does not support the library. Hence, I need to look for another alternative.</div>
<div class="graf graf--p" name="7874">
<br /></div>
<div class="graf graf--p" name="2253">
Based on the performance comparison between Hashmap, HashSet, and TreeSet, HashSet seems promising. And so it did. My final code is using HashSet and finally, the result shown is 100%. Here is part of the code:</div>
<div class="graf graf--p" name="2253">
1. Definition</div>
<div class="graf graf--p" name="2253" style="text-align: center;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">HashSet<integer> list= new HashSet();</integer></span></div>
<div class="graf graf--p" name="7874">
<br /></div>
<div class="graf graf--p" name="7874">
2. Used</div>
<div class="graf graf--p" name="7874">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">for(int idx = 0; idx < A.length; idx++){</span></div>
<div class="graf graf--p" name="7874">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> if ( !list.contains(A[idx]) ){</span></div>
<div class="graf graf--p" name="7874">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> list.add(A[idx]);</span></div>
<div class="graf graf--p" name="7874">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span></div>
<div class="graf graf--p" name="7874">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> if ( list.size() == X ){</span></div>
<div class="graf graf--p" name="7874">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> return idx;</span></div>
<div class="graf graf--p" name="7874">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span></div>
<div class="graf graf--p" name="7874">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span></div>
<div class="graf graf--p graf--empty" name="5f2b">
<br /></div>
<div class="graf graf--p" name="69b6">
I also found a few solutions which score 100%</div>
<div class="graf graf--p" name="69b6">
This solution was shared by someone and it claims score 100/100</div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">public int solution(int X, int[] A) {</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> int[] B = A.Distinct().ToArray();</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> return (B.Length != X) ? -1 : Array.IndexOf(A, B[B.Length - 1]);</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span></div>
<div class="graf graf--p" name="69b6">
</div>
<div class="graf graf--p" name="69b6">
This solution was shared too and score 100/100 for correctness, task, and performance</div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">public int solution(int X, int[] A) {</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">HashSet<integer> unique= new HashSet<integer>();</integer></integer></span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> for (int i = 1; i<= X; i++){</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> unique.add(i);</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> for(int j = 0; j< A.length; j++){</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> if(unique.contains(A[j])){</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> unique.remove(A[j]);</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> if(unique.isEmpty()){</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> return j;</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> return -1;</span></div>
<div class="graf graf--p" name="69b6">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span></div>
<div class="graf graf--p" name="69b6">
<br /></div>
<div class="graf graf--p" name="69b6">
<br /></div>
<div class="graf graf--p graf--empty" name="5f2b">
Full source code is accessible at</div>
<div class="graf graf--p" name="acee">
</div>
<ol>
<li>Bitbucket — git clone <a class="markup--anchor markup--p-anchor" data-href="https://masteramuk@bitbucket.org/fullstacksdev/codility-frogriverone.git" href="https://masteramuk@bitbucket.org/fullstacksdev/codility-frogriverone.git" rel="noopener" target="_blank">https://masteramuk@bitbucket.org/fullstacksdev/codility-frogriverone.git</a></li>
<li>Github — git clone <a class="markup--anchor markup--p-anchor" data-href="https://github.com/masteramuk/codility-lessoncode.git" href="https://github.com/masteramuk/codility-lessoncode.git" rel="nofollow noopener" target="_blank">https://github.com/masteramuk/codility-lessoncode.git</a></li>
</ol>
<br />
<div class="graf graf--p graf--empty" name="5f2b">
<br /></div>
</div>
</div>
</section>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-13114427746630329282020-01-12T05:41:00.001-08:002020-01-12T05:41:39.730-08:00Codility - TapeEquilibirium (Finding the lowest difference in an array)<section class="section section--body" name="6354"><div class="section-divider">
<hr class="section-divider" />
</div>
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<div class="graf graf--p" name="c26b">
Given an array of int (ranging from -ve to +ve value) with the minimum number of an element is 2 and the maximum element is 100,000, you need to find the lowest difference between two sets of value (of the total sum of the array).</div>
</div>
</div>
</section><section class="section section--body" name="1f6e"><div class="section-divider">
<hr class="section-divider" />
</div>
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<div class="graf graf--p" name="e5a6">
The actual description can be seen at Codility website (<a class="markup--anchor markup--p-anchor" data-href="https://app.codility.com/programmers/lessons/3-time_complexity/tape_equilibrium/" href="https://app.codility.com/programmers/lessons/3-time_complexity/tape_equilibrium/" rel="noopener" target="_blank">https://app.codility.com/programmers/lessons/3-time_complexity/tape_equilibrium/</a>)</div>
</div>
</div>
</section><section class="section section--body" name="5105"><div class="section-divider">
<hr class="section-divider" />
</div>
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<div class="graf graf--p" name="6589">
It took me 1 full day to resolve it despite the time given was only 120 minutes. On the first trial, I got 88% correct. It resolves all but two out of all test was considered as a failure due to time taken was more than expected. Next few trials, I score between 66% and 84%. The only issue was the double element array and small element array.</div>
<div class="graf graf--p" name="6789">
After a while, I figure out. The line below</div>
<blockquote class="graf graf--blockquote" name="77d2">
<strong class="markup--strong markup--blockquote-strong">int totalSum = Arrays.stream(A).sum();</strong></blockquote>
<div class="graf graf--p" name="44e6">
is causing the time taken more than expected. Although it passed, it was 0.020 seconds more than the limit.</div>
<div class="graf graf--p" name="a3bb">
<br /></div>
<div class="graf graf--p" name="a3bb">
After a few modifications, wallawei, finally, I achieved 100%.</div>
<div class="section-divider">
<hr class="section-divider" />
</div>
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7NXYr0B1k-7RM56sPHihLKqyuCJmcX4aR4nt3Nk5ZUiXEkVXmxmgooD19uWiljIRdNKBKyk5iPy3C11gQ2tYcPvOrO2mp-5Cts0TgCokNUrlcYqOzx_-7-dtKofe1A_ifMRFTV5TGxOUV/s1600/tapeequl.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="988" data-original-width="1038" height="380" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7NXYr0B1k-7RM56sPHihLKqyuCJmcX4aR4nt3Nk5ZUiXEkVXmxmgooD19uWiljIRdNKBKyk5iPy3C11gQ2tYcPvOrO2mp-5Cts0TgCokNUrlcYqOzx_-7-dtKofe1A_ifMRFTV5TGxOUV/s400/tapeequl.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Snapshot of the code</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp4Vvw2e91XsjWWyfIs5NUb5RYzFd1TDU5-bgrqeZiLBRDJTAPswihhjeb3h48izxB2vmusl_Xot1GrETT2w1FNVC2sfNJ84o3q8EVdzQAPbuX7rBRZAyKI6qNqa26vn_MD1sAE19BLMbE/s1600/tapeequal2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="133" data-original-width="1600" height="31" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp4Vvw2e91XsjWWyfIs5NUb5RYzFd1TDU5-bgrqeZiLBRDJTAPswihhjeb3h48izxB2vmusl_Xot1GrETT2w1FNVC2sfNJ84o3q8EVdzQAPbuX7rBRZAyKI6qNqa26vn_MD1sAE19BLMbE/s400/tapeequal2.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Result</td></tr>
</tbody></table>
<div class="section-divider">
<hr class="section-divider" />
</div>
<div class="section-content">
<div class="section-inner sectionLayout--insetColumn">
<div class="graf graf--p" name="6589">
Full code is accessible at</div>
</div>
</div>
<div class="graf graf--p" name="9823">
</div>
<ol>
<li>Bitbucket — git clone <a class="markup--anchor markup--p-anchor" data-href="https://masteramuk@bitbucket.org/fullstacksdev/codility-tapeequilibrium.git" href="https://masteramuk@bitbucket.org/fullstacksdev/codility-tapeequilibrium.git" rel="noopener" target="_blank">https://masteramuk@bitbucket.org/fullstacksdev/codility-tapeequilibrium.git</a></li>
<li>Github — git clone <a class="markup--anchor markup--p-anchor" data-href="https://github.com/masteramuk/codility-lessoncode.git" href="https://github.com/masteramuk/codility-lessoncode.git" rel="nofollow noopener" target="_blank">https://github.com/masteramuk/codility-lessoncode.git</a></li>
</ol>
<br />
<div class="graf graf--p" name="6589">
<br /></div>
<div class="graf graf--p" name="6589">
<br /></div>
</div>
</div>
<div class="graf graf--p" name="a3bb">
<br /></div>
</div>
</div>
</section>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-73529548445317556782020-01-11T18:34:00.001-08:002020-01-11T18:34:32.969-08:00Codility - PermMissingElem (Find the missing element in a given permutation)<div class="graf graf--p" name="7bef">
This is a lesson in codility for the Time Complexity algorithm. Given an array of integer, you need to find the lowest missing integer.<br />
<br /></div>
<div class="graf graf--p" name="a915">
I managed to score 100% for it.<br />
<br /></div>
<div class="graf graf--p" name="da12">
<b>Here is the snapshot of the code:</b></div>
<div class="graf graf--p" name="c80f">
Based on the length, for all value in Array A, start the search and compare the initial value; that is 1 (expectedInt). If the value exists, the expectedInt is added 1 value.<br />
<span style="color: blue; font-family: "Courier New", Courier, monospace; font-size: x-small;">if( A.length > 0 ){</span><br />
<span style="color: blue; font-family: "Courier New", Courier, monospace; font-size: x-small;"> for (int x : A){</span><br />
<span style="color: blue; font-family: "Courier New", Courier, monospace; font-size: x-small;"> </span><span style="color: blue; font-family: "Courier New", Courier, monospace; font-size: x-small;">//if found a value based on expected value </span><br />
<span style="color: blue; font-family: "Courier New", Courier, monospace; font-size: x-small;"> if (x == expectedInt){ </span><br />
<span style="color: blue; font-family: "Courier New", Courier, monospace; font-size: x-small;"> </span><span style="color: blue; font-family: "Courier New", Courier, monospace; font-size: x-small;">expectedInt++;</span><br />
<span style="color: blue; font-family: "Courier New", Courier, monospace; font-size: x-small;"> } else { //if found a mising value </span><br />
<span style="color: blue; font-family: "Courier New", Courier, monospace; font-size: x-small;"> missingInt = expectedInt;</span><br />
<span style="color: blue; font-family: "Courier New", Courier, monospace; font-size: x-small;"> }</span><br />
<span style="color: blue; font-family: "Courier New", Courier, monospace; font-size: x-small;"> }</span><br />
<span style="color: blue; font-family: "Courier New", Courier, monospace; font-size: x-small;"> }</span></div>
<div class="graf graf--p" name="05f2">
If the Array is empty, we will just set the missingInt to 1.<br />
<span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;">if (A.length == 0) {</span><br />
<span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"> missingInt = 1;</span><br />
<span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span></div>
<div class="graf graf--p" name="b3fc">
If no missing int found, then we just add additional 1 to the last value found<br />
<span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;">if (missingInt == 0){</span><br />
<span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"> missingInt = A[A.length — 1] + 1;</span><br />
<span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span><br />
<span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span></div>
<div class="graf graf--p" name="b15f">
The complete code is shown below<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDr4bCKmQs7gawxNY89QOck8X47Xowu-8r2YJIP_9GDpJU763sFpaJvh4ULZ8dAi1WW_KKEhyBBwi7ncdWS3SkN4OLQnLGKRyrEjDpcScALC7Y2hyphenhyphenYnr6glq8NeAXZuUDBmbqqFnSaVfAl/s1600/missingvale.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="870" data-original-width="1298" height="267" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDr4bCKmQs7gawxNY89QOck8X47Xowu-8r2YJIP_9GDpJU763sFpaJvh4ULZ8dAi1WW_KKEhyBBwi7ncdWS3SkN4OLQnLGKRyrEjDpcScALC7Y2hyphenhyphenYnr6glq8NeAXZuUDBmbqqFnSaVfAl/s400/missingvale.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Codility - PermMissingElem sample code</td></tr>
</tbody></table>
My result is shown below<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9ylRX5q0Jgd02O3EkuUr1svkwxDjyg6-v5fe10i38BIKtTanBUZVoUkig5h8OQbU9r8Lrl10CCgdEB4X96IpX2vvcplxeUiTlhg1ca-75aD0Nb5At2fyIKahlfGIuUM_omSQkpeNn3x1U/s1600/resultmissing.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1292" data-original-width="1108" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9ylRX5q0Jgd02O3EkuUr1svkwxDjyg6-v5fe10i38BIKtTanBUZVoUkig5h8OQbU9r8Lrl10CCgdEB4X96IpX2vvcplxeUiTlhg1ca-75aD0Nb5At2fyIKahlfGIuUM_omSQkpeNn3x1U/s400/resultmissing.png" width="342" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Result</td></tr>
</tbody></table>
<br />
<br />
You can download the code from here:<br />
<br />
<ol>
<li>Bitbucket - <span style="background-color: white; color: #172b4d; font-family: -apple-system, system-ui, "Segoe UI", Roboto, Oxygen, Ubuntu, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; font-size: 14px; white-space: pre;">git clone <a href="https://masteramuk@bitbucket.org/fullstacksdev/codility-permmissingelem.git">https://masteramuk@bitbucket.org/fullstacksdev/codility-permmissingelem.git</a></span></li>
<li>Github - git clone <a href="https://github.com/masteramuk/codility-lessoncode.git">https://github.com/masteramuk/codility-lessoncode.git</a></li>
</ol>
<br />
<br />
<br /></div>
masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-38259256944634757732020-01-11T04:46:00.000-08:002020-01-11T04:46:52.816-08:00Codility - FrogJmp (Count minimal number of jumps from position X to Y)<h3>
Codility - FrogJmp</h3>
<h3>
Count the minimal number of jumps from position X to Y</h3>
FrogJmp is the third lesson number 1 out of three in the list for Time Complexity algorithm. Basically, it is an algorithm to count the number of the jump from one X location to Y location when the number of the step taken is given as Z for each single jump<br />
<div>
<br /></div>
<div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;">public int solution(int X, int Y, int D){</span></div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;"> int a = 0;</span></div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Y = Y - X; //setting the initial value test</span></div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;"> if (Y >= 1){ //evaluating the Y value</span></div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;"> a = Y/D; //setting the initial return value</span></div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;"> if (Y % D > 0){ //evaluating the possible number of jump to add additional value</span></div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;"> a++;</span></div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;"> }</span></div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;"> }</span></div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;"> if ( a == 0 && (Y%D==0) && Y > X ){ //final check</span></div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;"> a = 1;</span></div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;"> }</span></div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;"> return a;</span></div>
<div>
<span style="color: blue; font-family: "courier new" , "courier" , monospace; font-size: x-small;"> };</span></div>
</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6na3VeN3By0rV2598sM2yhHxkDgHTEHZTbVIXP3zlN9EzCk11d3LcNTbnVKlDT7O57BW4bG10dHEF8bQP6hkWvbDr4dpcBHdUVmCWIXhK87Jz6iEtcjuPZ5R52xyJ4yC2gv7Nm88btCNy/s1600/frogjump.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1158" data-original-width="1098" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6na3VeN3By0rV2598sM2yhHxkDgHTEHZTbVIXP3zlN9EzCk11d3LcNTbnVKlDT7O57BW4bG10dHEF8bQP6hkWvbDr4dpcBHdUVmCWIXhK87Jz6iEtcjuPZ5R52xyJ4yC2gv7Nm88btCNy/s400/frogjump.png" width="378" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Result of the code<br />
<div style="text-align: left;">
<br /></div>
</td></tr>
</tbody></table>
<div>
Code is downloadable from</div>
<div>
Bitbucket - <span style="background-color: white; color: #172b4d; font-family: , , "segoe ui" , "roboto" , "oxygen" , "ubuntu" , "fira sans" , "droid sans" , "helvetica neue" , sans-serif; font-size: 14px; white-space: pre;">git clone <a href="https://masteramuk@bitbucket.org/fullstacksdev/codility-frogjmp.git">https://masteramuk@bitbucket.org/fullstacksdev/codility-frogjmp.git</a></span></div>
Github - <a href="https://github.com/masteramuk/codility-lessoncode.git">https://github.com/masteramuk/codility-lessoncode.git</a>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-77570403536321741892020-01-09T23:34:00.000-08:002020-01-09T23:34:37.733-08:00Codility - OddOccurrencesInArray (Find value that occurs in odd number of elements)<div class="graf graf--p" name="a411">
Given an array, find a value that has no duplication or unpaired value. I scored 100%</div>
<br />
public int solution (int[] A){<br />
int a = 0;<br />
//sort the array<br />
Arrays.sort(A);<br />
<br />
int[] sortA = A;<br />
int x = 0;<br />
int cnt = 1;<br />
int[] oddA = new int[]{};<br />
//int idxOdd = 0;<br />
<br />
while ( x < sortA.length ){<br />
if ( x != 0 ){<br />
if (a == sortA[x]){<br />
cnt++;<br />
} else {<br />
if (cnt % 2 > 0){<br />
oddA = Arrays.copyOf(oddA, oddA.length + 1 ); //sortA[ x - 1];<br />
oddA[oddA.length - 1] = sortA [x - 1];<br />
}<br />
a = sortA[x];<br />
cnt = 1;<br />
}<br />
} else {<br />
a = sortA[x];<br />
}<br />
x++;<br />
}<br />
if ( x == sortA.length && cnt == 1) {<br />
oddA = Arrays.copyOf(oddA, oddA.length + 1 ); //sortA[ x - 1];<br />
oddA[oddA.length - 1] = sortA[x - 1];<br />
}<br />
System.err.println("sortA: " + Arrays.toString(sortA) + System.lineSeparator() + "Result: " + Arrays.toString(oddA));<br />
return oddA[0];<br />
};<br />
<br />
<div class="graf graf--p" name="119a">
The code is downloadable from</div>
<div class="graf graf--p" name="157c">
Bitbucket — git clone <a class="markup--anchor markup--p-anchor" data-href="https://masteramuk@bitbucket.org/fullstacksdev/codility-oddoccurencesinarray.git" href="https://masteramuk@bitbucket.org/fullstacksdev/codility-oddoccurencesinarray.git" rel="noopener" target="_blank">https://masteramuk@bitbucket.org/fullstacksdev/codility-oddoccurencesinarray.git</a></div>
<div class="graf graf--p" name="22fb">
Github git clone <a class="markup--anchor markup--p-anchor" data-href="https://github.com/masteramuk/codility-lessoncode.git" href="https://github.com/masteramuk/codility-lessoncode.git" rel="nofollow noopener" target="_blank">https://github.com/masteramuk/codility-lessoncode.git</a></div>
masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-30345996577811478962020-01-09T16:38:00.000-08:002020-01-09T16:38:22.407-08:00Codility - CyclicRotation (Rotate an array to the right by a given number of steps)This is the second lesson in <a href="https://app.codility.com/">Codility</a>; that is to rearrange an array to the right based on the number of steps given. It will be two input and I scored 100% for it.<br />
<br />
public int[] solution (int[] A, int K){<br />
int a = 0;<br />
int[] sortA = A;<br />
int x = 0;<br />
<br />
while (x < K && x < A.length){<br />
a = sortA[sortA.length - 1];<br />
<br />
Arrays.copyOfRange(sortA, 0, sortA.length);<br />
sortA = Arrays.copyOf(sortA, sortA.length);<br />
System.arraycopy(sortA, 0, sortA, 1, sortA.length - 1);<br />
sortA[0] = a;<br />
<br />
System.err.println( x + " : " + Arrays.toString(sortA) + " - " + a);<br />
<br />
x++;<br />
}<br />
return sortA;<br />
};<br />
<br />
<br />
<span class="result good js-inline-popup" style="box-sizing: inherit; color: #1da619;">100%</span> <a href="https://app.codility.com/programmers/lessons/2-arrays/cyclic_rotation/" style="background: 0px 0px; box-sizing: inherit; color: #046ba2; text-decoration-line: none; text-size-adjust: none;">CyclicRotation</a><br />
<br />
You can get the code at<br />
<span style="background-color: white; color: #172b4d; font-family: -apple-system, system-ui, "Segoe UI", Roboto, Oxygen, Ubuntu, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; font-size: 14px; white-space: pre;">Bitbucket - git clone https://masteramuk@bitbucket.org/fullstacksdev/codility-cyclicrotation.git</span><br />
<span style="background-color: white; color: #172b4d; font-family: -apple-system, system-ui, "Segoe UI", Roboto, Oxygen, Ubuntu, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; font-size: 14px; white-space: pre;">Github - git clone </span><span style="color: #172b4d; font-family: -apple-system, system-ui, Segoe UI, Roboto, Oxygen, Ubuntu, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;"><span style="font-size: 14px; white-space: pre;">https://github.com/masteramuk/codility-lessoncode.git</span></span><br />
<br />masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0tag:blogger.com,1999:blog-3322146266378349147.post-69773157411876164372020-01-09T01:09:00.000-08:002020-01-09T16:26:30.100-08:00Codility - Find longest sequence of zeros in binary representation of an integer.I'm taking the coding test at <a href="https://app.codility.com/">Codility</a> for a job offered by a Japanese company (of which I did not get it). For practice, I tried all and this are the code (in Java) for binary gap<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">public int solution (int N){</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="pl-c" style="background-color: white; box-sizing: border-box; color: #6a737d; white-space: pre;">//</span><span style="background-color: white; color: #6a737d; white-space: pre;">Convert the value to binary and split the value between number 1</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> String s2[] = Integer.toBinaryString(N).substring(0, Integer.toBinaryString(N).lastIndexOf('1') ).split("1");</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> int x = 0;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> int a = 0;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="pl-c" style="background-color: white; box-sizing: border-box; color: #6a737d; white-space: pre;">//</span><span style="background-color: white; color: #6a737d; white-space: pre;">find and count the longest zeros</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> while(x < s2.length){</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> a = a > s2[x].length() ? a : s2[x].length();</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> x++;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> }</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> System.out.println("Number: " + N + System.lineSeparator() + "Binary: " + Integer.toBinaryString(N) </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> + System.lineSeparator() + "Zero: " + a);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> return a;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> };</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "times" , "times new roman" , serif;">It score 100% for codility test.</span><br />
<span style="font-family: "times" , "times new roman" , serif;"><br /></span>
<span style="font-family: "times" , "times new roman" , serif;">You can download the code here</span><br />
<span style="font-family: "times" , "times new roman" , serif;">Bitbucket - </span><span style="background-color: white; color: #172b4d; font-family: , , "segoe ui" , "roboto" , "oxygen" , "ubuntu" , "fira sans" , "droid sans" , "helvetica neue" , sans-serif; font-size: 14px; white-space: pre;">git clone https://masteramuk@bitbucket.org/fullstacksdev/codility-binarygap.git</span><br />
<span style="background-color: white; color: #172b4d; font-family: , , "segoe ui" , "roboto" , "oxygen" , "ubuntu" , "fira sans" , "droid sans" , "helvetica neue" , sans-serif; font-size: 14px; white-space: pre;">Github - git clone </span><span style="color: #172b4d; font-family: , , "segoe ui" , "roboto" , "oxygen" , "ubuntu" , "fira sans" , "droid sans" , "helvetica neue" , sans-serif;"><span style="font-size: 14px; white-space: pre;">https://github.com/masteramuk/codility-lessoncode.git</span></span>masteramukhttp://www.blogger.com/profile/12086746195841833474noreply@blogger.com0