mirror of
https://github.com/rvtr/rmc_website.git
synced 2025-10-31 13:31:21 -04:00
fixed dev dsi shop stuff
This commit is contained in:
parent
43221ff4a3
commit
6af80cae64
@ -0,0 +1 @@
|
||||
I"¯{"source"=>"/home/rmc/Desktop/ianskinner1982.github.io", "destination"=>"/home/rmc/Desktop/ianskinner1982.github.io/_site", "collections_dir"=>"", "cache_dir"=>".jekyll-cache", "plugins_dir"=>"_plugins", "layouts_dir"=>"_layouts", "data_dir"=>"_data", "includes_dir"=>"_includes", "collections"=>{"posts"=>{"output"=>true, "permalink"=>"/:categories/:year/:month/:day/:title:output_ext"}}, "safe"=>false, "include"=>[".htaccess"], "exclude"=>[".sass-cache", ".jekyll-cache", "gemfiles", "Gemfile", "Gemfile.lock", "node_modules", "vendor/bundle/", "vendor/cache/", "vendor/gems/", "vendor/ruby/"], "keep_files"=>[".git", ".svn"], "encoding"=>"utf-8", "markdown_ext"=>"markdown,mkdown,mkdn,mkd,md", "strict_front_matter"=>false, "show_drafts"=>nil, "limit_posts"=>0, "future"=>false, "unpublished"=>false, "whitelist"=>[], "plugins"=>["jekyll-feed", "jekyll-sitemap", "jekyll-seo-tag"], "markdown"=>"kramdown", "highlighter"=>"rouge", "lsi"=>false, "excerpt_separator"=>"\n\n", "incremental"=>false, "detach"=>false, "port"=>"4000", "host"=>"127.0.0.1", "baseurl"=>nil, "show_dir_listing"=>false, "permalink"=>"date", "paginate_path"=>"/page:num", "timezone"=>nil, "quiet"=>false, "verbose"=>false, "defaults"=>[], "liquid"=>{"error_mode"=>"warn", "strict_filters"=>false, "strict_variables"=>false}, "kramdown"=>{"auto_ids"=>true, "toc_levels"=>[1, 2, 3, 4, 5, 6], "entity_output"=>"as_char", "smart_quotes"=>"lsquo,rsquo,ldquo,rdquo", "input"=>"GFM", "hard_wrap"=>false, "guess_lang"=>true, "footnote_nr"=>1, "show_warnings"=>false}, "name"=>"rmc's site", "title"=>"rmc's site", "url"=>"http://localhost:4000", "feed"=>{"posts_limit"=>20, "path"=>nil}, "livereload_port"=>35729, "serving"=>true, "watch"=>true}:ET
|
||||
13
404.html
Normal file
13
404.html
Normal file
@ -0,0 +1,13 @@
|
||||
---
|
||||
title: Error 404
|
||||
layout: noinclude
|
||||
permalink: /404.html
|
||||
---
|
||||
|
||||
{% include nav.html %}
|
||||
<div class="text-center" style="color: #fff;">
|
||||
<h1>404</h1>
|
||||
<h1>Not Found</h1>
|
||||
<p><a href="javascript:window.history.back()">Previous page</a></p>
|
||||
<p><a href="/">Home</a></p>
|
||||
</div>
|
||||
15
Gemfile
Normal file
15
Gemfile
Normal file
@ -0,0 +1,15 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
source "https://rubygems.org"
|
||||
|
||||
# gem "rails"
|
||||
|
||||
gem "jekyll", "~> 4.2"
|
||||
|
||||
group :jekyll_plugins do
|
||||
gem 'jekyll-sitemap'
|
||||
gem 'jekyll-feed'
|
||||
gem 'jekyll-seo-tag'
|
||||
end
|
||||
|
||||
gem "webrick", "~> 1.7"
|
||||
79
Gemfile.lock
Normal file
79
Gemfile.lock
Normal file
@ -0,0 +1,79 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
addressable (2.8.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
colorator (1.1.0)
|
||||
concurrent-ruby (1.1.9)
|
||||
em-websocket (0.5.3)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0)
|
||||
eventmachine (1.2.7)
|
||||
ffi (1.15.5)
|
||||
forwardable-extended (2.6.0)
|
||||
http_parser.rb (0.8.0)
|
||||
i18n (1.9.1)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (4.2.1)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
em-websocket (~> 0.5)
|
||||
i18n (~> 1.0)
|
||||
jekyll-sass-converter (~> 2.0)
|
||||
jekyll-watch (~> 2.0)
|
||||
kramdown (~> 2.3)
|
||||
kramdown-parser-gfm (~> 1.0)
|
||||
liquid (~> 4.0)
|
||||
mercenary (~> 0.4.0)
|
||||
pathutil (~> 0.9)
|
||||
rouge (~> 3.0)
|
||||
safe_yaml (~> 1.0)
|
||||
terminal-table (~> 2.0)
|
||||
jekyll-feed (0.16.0)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-sass-converter (2.1.0)
|
||||
sassc (> 2.0.1, < 3.0)
|
||||
jekyll-seo-tag (2.7.1)
|
||||
jekyll (>= 3.8, < 5.0)
|
||||
jekyll-sitemap (1.4.0)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-watch (2.2.1)
|
||||
listen (~> 3.0)
|
||||
kramdown (2.3.1)
|
||||
rexml
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
kramdown (~> 2.0)
|
||||
liquid (4.0.3)
|
||||
listen (3.7.1)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
mercenary (0.4.0)
|
||||
pathutil (0.16.2)
|
||||
forwardable-extended (~> 2.6)
|
||||
public_suffix (4.0.6)
|
||||
rb-fsevent (0.11.0)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rexml (3.2.5)
|
||||
rouge (3.27.0)
|
||||
safe_yaml (1.0.5)
|
||||
sassc (2.4.0)
|
||||
ffi (~> 1.9)
|
||||
terminal-table (2.0.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
unicode-display_width (1.8.0)
|
||||
webrick (1.7.0)
|
||||
|
||||
PLATFORMS
|
||||
universal-darwin-21
|
||||
x86_64-linux
|
||||
|
||||
DEPENDENCIES
|
||||
jekyll (~> 4.2)
|
||||
jekyll-feed
|
||||
jekyll-seo-tag
|
||||
jekyll-sitemap
|
||||
webrick (~> 1.7)
|
||||
|
||||
BUNDLED WITH
|
||||
2.3.4
|
||||
9
_config.yml
Normal file
9
_config.yml
Normal file
@ -0,0 +1,9 @@
|
||||
name: rmc's site
|
||||
title: rmc's site
|
||||
url: https://ianskinner1982.github.io
|
||||
plugins:
|
||||
- jekyll-feed
|
||||
- jekyll-sitemap
|
||||
- jekyll-seo-tag
|
||||
feed:
|
||||
posts_limit: 20
|
||||
12
_data/projects-archived.yml
Normal file
12
_data/projects-archived.yml
Normal file
@ -0,0 +1,12 @@
|
||||
- name: csharpcollection
|
||||
truename: CSharpCollection
|
||||
icon: https://cdn.ncxprogramming.com/file/icon/csharpcollection.png
|
||||
desc: A collection of C# things made with WPF.
|
||||
- name: ncxcorelite
|
||||
truename: NCX-Core-Lite
|
||||
icon: https://cdn.ncxprogramming.com/file/icon/ncxcore.png
|
||||
desc: The start of a cross-platform CLI/GUI program to install more programs.
|
||||
- name: thevault
|
||||
truename: theVault
|
||||
icon: https://cdn.ncxprogramming.com/file/icon/placeholder.svg
|
||||
desc: A collection of cross-platform C# console apps.
|
||||
20
_data/projects-maintained.yml
Normal file
20
_data/projects-maintained.yml
Normal file
@ -0,0 +1,20 @@
|
||||
- name: ncxcore
|
||||
truename: NCX-Core
|
||||
icon: https://cdn.ncxprogramming.com/file/icon/ncxcore.png
|
||||
desc: Our program to install more programs.
|
||||
- name: rngtool
|
||||
truename: RNGTool
|
||||
icon: https://cdn.ncxprogramming.com/file/icon/rngtool.png
|
||||
desc: A macOS/iOS app that generates random numbers.
|
||||
- name: thevaultbasic
|
||||
truename: theVaultBasic2.0
|
||||
icon: https://cdn.ncxprogramming.com/file/icon/thevaultbasic.png
|
||||
desc: A collection of C64 apps, similar to theVaultC.
|
||||
- name: thevaultc
|
||||
truename: theVaultC
|
||||
icon: https://cdn.ncxprogramming.com/file/icon/thevaultc.png
|
||||
desc: A collection of cross-platform C console apps.
|
||||
- name: xware
|
||||
truename: XWare
|
||||
icon: https://cdn.ncxprogramming.com/file/icon/xware.png
|
||||
desc: Our small programs that can be downloaded in NCX-Core.
|
||||
7
_includes/footer.html
Normal file
7
_includes/footer.html
Normal file
@ -0,0 +1,7 @@
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="background-color: rgba(0, 0, 0, 0.25);">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
<br>
|
||||
<span class="nav col-md-4 list-unstyled d-inline"><a href="https://github.com/IanSkinner1982"><img class="bi" width="24" height="24" src="https://cdn.ncxprogramming.com/file/image/navbar/github-dark.svg" alt=""></a> <a href="https://discord.gg/XZxxZngwDQ"><img class="bi" width="24" height="24" src="https://cdn.ncxprogramming.com/file/image/navbar/discord-dark.svg" alt=""></a></span>
|
||||
</div>
|
||||
</footer>
|
||||
5
_includes/footerdsi.html
Normal file
5
_includes/footerdsi.html
Normal file
@ -0,0 +1,5 @@
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
25
_includes/nav.html
Normal file
25
_includes/nav.html
Normal file
@ -0,0 +1,25 @@
|
||||
{% if page.title == "Error 404" %}
|
||||
<nav class="navbar navbar-dark navbar-expand-lg bg-black">
|
||||
{% else %}
|
||||
<nav class="navbar navbar-dark navbar-expand-lg bg-dark">
|
||||
{% endif %}
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="/">NCX Programming</a>
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarText">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/">Home</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/programs/">Programs</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/blog">DS Stuff</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
207
_includes/navdsi.html
Normal file
207
_includes/navdsi.html
Normal file
@ -0,0 +1,207 @@
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
14
_layouts/blogpage.html
Normal file
14
_layouts/blogpage.html
Normal file
@ -0,0 +1,14 @@
|
||||
---
|
||||
layout: dsiware
|
||||
---
|
||||
|
||||
<div class="text-center pt-3">
|
||||
<h1>{{ page.title }}</h1>
|
||||
<h3>{{ page.date | date: "%Y-%m-%d" }}</h3>
|
||||
<h4>{{ page.author }}</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
{{ content }}
|
||||
</div>
|
||||
38
_layouts/default.html
Normal file
38
_layouts/default.html
Normal file
@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>{{ page.title }} | {{ site.title }}</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/style.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
{% if page.title == "Home" %}
|
||||
<meta property="og:title" content="Welcome">
|
||||
{% else %}
|
||||
<meta property="og:title" content="{{ page.title }}">
|
||||
{% endif %}
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="{{ page.title }} | {{ site.title }}">
|
||||
<meta property="og:description" content="{{ page.title }} | {{ site.title }}">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
{% if page.custicon == true %}
|
||||
<meta property="og:image" content="{{ page.iconurl }}">
|
||||
{% else %}
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
{% endif %}
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
{% include nav.html %}
|
||||
<div id="content-wrap" style="padding-bottom: 2.5rem;">
|
||||
{{ content }}
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
{% include footer.html %}
|
||||
</footer>
|
||||
</html>
|
||||
38
_layouts/dsiware.html
Normal file
38
_layouts/dsiware.html
Normal file
@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>{{ page.title }} | {{ site.title }}</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
{% if page.title == "Home" %}
|
||||
<meta property="og:title" content="Welcome">
|
||||
{% else %}
|
||||
<meta property="og:title" content="{{ page.title }}">
|
||||
{% endif %}
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="{{ page.title }} | {{ site.title }}">
|
||||
<meta property="og:description" content="{{ page.title }} | {{ site.title }}">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
{% if page.custicon == true %}
|
||||
<meta property="og:image" content="{{ page.iconurl }}">
|
||||
{% else %}
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
{% endif %}
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
{% include navdsi.html %}
|
||||
<div id="content-wrap">
|
||||
{{ content }}
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
{% include footerdsi.html %}
|
||||
</footer>
|
||||
</html>
|
||||
30
_layouts/noinclude.html
Normal file
30
_layouts/noinclude.html
Normal file
@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>{{ page.title }} | {{ site.title }}</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/style.css">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ncxprogramming.com/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
{% if page.title == "Home" %}
|
||||
<meta property="og:title" content="Welcome">
|
||||
{% else %}
|
||||
<meta property="og:title" content="{{ page.title }}">
|
||||
{% endif %}
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="{{ page.title }} | {{ site.title }}">
|
||||
<meta property="og:description" content="{{ page.title }} | {{ site.title }}">
|
||||
<link rel="canonical" href="https://ncxprogramming.com">
|
||||
<meta property="og:url" content="https://ncxprogramming.com">
|
||||
<meta property="og:site_name" content="NCX Programming">
|
||||
{% if page.custicon == true %}
|
||||
<meta property="og:image" content="{{ page.iconurl }}">
|
||||
{% else %}
|
||||
<meta property="og:image" content="https://ncxprogramming.com/icon.png">
|
||||
{% endif %}
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<div id="content-wrap" style="padding-bottom: 2.5rem;">
|
||||
{{ content }}
|
||||
</div>
|
||||
</html>
|
||||
26
_layouts/program.html
Normal file
26
_layouts/program.html
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
<div class="container text-center">
|
||||
{% if page.archived == true %}
|
||||
<img src="https://cdn.ncxprogramming.com/file/image/banner/archived.svg" class="projectimg" style="width:80%;" alt="A banner that says 'Archved'.">
|
||||
{% endif %}
|
||||
<img src="{{ page.iconurl }}" class="projectimg" style="width:256px;height:256px;padding-top:8px;" alt="The program's icon.">
|
||||
<div class="text-center pb-3">
|
||||
<h1>{{ page.title }}</h1>
|
||||
<p><b>By {{ page.author }}</b></p>
|
||||
<p><b>Platform(s): </b>{{ page.platform }}</p>
|
||||
<div class="dropdown pb-3">
|
||||
<button class="btn btn-primary dropdown-toggle" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
Project Links
|
||||
</button>
|
||||
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1">
|
||||
{% for item in page.links %}
|
||||
<li><a class="dropdown-item" href="{{ item.link }}">{{ item.name }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div id="content-wrap" style="padding-bottom: 2.5rem;">
|
||||
{{ content }}
|
||||
</div>
|
||||
</div>
|
||||
9
_posts/2021-01-29-hello-blog.html
Normal file
9
_posts/2021-01-29-hello-blog.html
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
title: Welcome to the Blog
|
||||
titleshort: Hello Blog
|
||||
author: NinjaCheetah
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<p>Hello, and welcome to the NCX Programming blog! We plan to write about all sorts of tech nonsense here. Stay tuned for the first article, which will be about the Wii!</p>
|
||||
<p>For now, that's all I have to say. Our first articles should be coming out soon.</p>
|
||||
21
_posts/2021-01-30-wii-dvd-p1.html
Normal file
21
_posts/2021-01-30-wii-dvd-p1.html
Normal file
@ -0,0 +1,21 @@
|
||||
---
|
||||
title: Enabling the Hidden Wii DVD Icon Part 1
|
||||
titleshort: The Wii DVD Icon P1
|
||||
author: NinjaCheetah
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<p>NOTE: This article was originally written in OneNote and was not altered before being uploaded here. Please excuse formatting errors.</p>
|
||||
<p>Unsurprisingly, this is more easily said than done. To do this, you need to modify the Disc Channel’s BRLYT file (“Binary Revolution Layout” file), which is contained in the diskBann.ash file, which can be found at</p>
|
||||
<p> | 00000001/layout/common/diskBann.ash</p>
|
||||
<p>and the BRLYT file is stored inside that at</p>
|
||||
<p> | diskBann/arc/blyt/</p>
|
||||
<p>Once you’re there and can write to the file, it’s just a matter of changing a 00 to a 01.</p>
|
||||
<p><b>1. Obtaining the Necessary Files</b></p>
|
||||
<p>The first thing I needed to do is get the Wii System Menu files (in this case I downloaded System Menu 2.0U), using a tool like NUS Downloader to get them right from Nintendo’s servers. I chose to not pack the WAD, and to keep only the decrypted contents. The only file I really needed from this download was 00000001.app, but I kept the rest so that I could pack the WAD later.</p>
|
||||
<p><b>2. Extracting</b></p>
|
||||
<p>Now that I had the file I needed, I had to open it. I ended up using Sharpii’s U8 extraction tool to extract 00000001.app into the directory 00000001. Once I had it extracted, I poked around to see if I could find what I needed to find. Fortunately, that was one of the easiest things I had to do. Once I located the diskBann.ash file that I needed to get into, I had to figure out how to get into it. Eventually I found a tool called Easy CSM, and used its command-line ASH extraction tool to extract diskBann.ash into diskBann.ash.arc (so just an ARC file). I then struggled to figure out what I had to do with that ARC file. I tried using ECSM, but it just crashed, probably because I didn’t understand how it wanted me to set it up. I eventually discovered that the U8 extraction tool that from Sharpii is compatible with ARC files. What luck! Once I understood that, I was able to extract it and look through its files to find what I was looking for.</p>
|
||||
<p>Once I had the BRLYT file in my sights, I finally felt like things were going to work! …until I realized that, like before, I had no idea how to get into this file. I managed to find a guide on banner creation for the Wii, and it has a guide on how to convert a BRLYT file into an XMLYT file (using a tool called Benzin), which I could just open in Notepad. (Pretty sure an XMLYT file is just an XML file - it certainly looks like one.) Once I had it in an acceptable format, I just had to scroll through, find the flag I needed to change, change it, and get out of there.</p>
|
||||
<p><b>3. Recompressing</b></p>
|
||||
<p>I thought the hard part was over. It wasn’t. Now that I had changed what I needed, I needed to stick it all back together so I could use it. Luckily, Benzin could change XMLYT files back into BRLYT files, so that was easy enough. But then I had to figure out how to compress the diskBann folder back into an ASH file. I didn’t have anything that could do that. I was able to compress it into a file that said it was an ASH file using Sharpii, but it was the exact same size as the ARC (which was much larger than the ASH), so it seems to have just created a renamed ARC file. I decided that was probably good enough, since I knew some other files were also just renamed ARC files. The next step, compressing everything back into 00000001.app, wasn’t terrible once I figured out how the command worked. And this is where I hit the roadblock that stopped me. I needed to pack everything into a WAD so that I could actually use it. And the command failed every time. </p>
|
||||
<p>So this is where things end for now. I <i>have</i> experimented more since this, and made more progress, so expect a follow up article at some point.</p>
|
||||
25
_posts/2021-04-08-wii-dvd-p2.html
Normal file
25
_posts/2021-04-08-wii-dvd-p2.html
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
title: Enabling the Hidden Wii DVD Icon Part 2
|
||||
titleshort: The Wii DVD Icon P2
|
||||
author: NinjaCheetah
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<p>Before I get anyone's hopes up, I should state that this <b>did not</b> work. If that disappointment isn't too much for you, I'd love it if you kept reading.</p>
|
||||
<p>So now with that out of the way, I'm sure you're wondering, <b>what did I do differently this time?</b></p>
|
||||
<p><b>1. A different method of obtaining the system files</b></p>
|
||||
<p>The first major change I made, which fixed the biggest issue from last time, was the way I obtained the .app files within the Wii System Menu install WAD. Last time, I chose to just save the decrypted contents in NUS Downloader, however that ended up preventing me from packing the WAD at the end of the process. This time I didn't save the decrypted contents, but instead had NUS Downloader pack the WAD for me. Once I had the WAD, I unpacked it with Sharpii, which left me with <i>almost</i> the same files. The difference is that this time I had the ticket<sup>[Check]</sup> which allowed me to pack the WAD at the end.</p>
|
||||
<p><b>2. Recompressing the archives</b></p>
|
||||
<p>Note: Since this article was written long after I tried the things listed in it, accuracy is not guaranteed.</p>
|
||||
<p>What I tried this time was enabling LZ77 compression on the .arc file, then compressing the .arc again into an .ash, rather than going directly to a .ash. Thanks to my new method of obtaining the Wii Menu files, I was able to pack the WAD no problem and install it. However, once I installed the WAD in Dolphin, problems arose. The initial setup went just fine, as it should have since I didn't mess with those files, however once I tried to select the Disc Channel, it all came crashing down, in a way more literal than I would have liked. Fatal exception. Unfortunately, my .ash recompression method had not worked properly. (For the sake of making sure the WAD itself wasn't the issue, I unpacked, repacked, and installed an unmodified version and it worked just fine.)</p>
|
||||
<p><b>So where does this leave me?</b></p>
|
||||
<p>When I originally started (and then lost) this article back when I did all this, it left me with no leads and nothing else to try, or at least nothing I could think of. Thankfully, a fellow nerd known as <a href=https://github.com/Garhoogin>Garhoogin</a> gave me some extremely valuable information. It turns out I wasn't understanding the Wii's file formats correctly (specfically the .arc and .ash formats). Only .ash files are compressed, whereas .arc files are just archives. That's why adding the LZ77 compression to the .arc didn't help; it's not a compressed file. So now my new plan is as follows:</p>
|
||||
<ol>
|
||||
<li>Do everything I did last time up the the recompression part</li>
|
||||
<li>Pack diskBann/arc into diskBann.arc, <i>without</i> LZ77 compression</li>
|
||||
<li>Compress diskBann.arc into diskbann.ash, <i>with</i> LZ77 compression</li>
|
||||
<li>Put diskBann.ash at 00000001/layout/common/ and compress 00000001.app</li>
|
||||
<li>Pack the WAD and install in Dolphin</li>
|
||||
<li>Profit (in theory)</li>
|
||||
</ol>
|
||||
<p>So, for now I leave you here. Hopefully there will be an update soon, as I intend to follow the plan above in the next few days so that I can make an update to this faster than last time.
|
||||
124
_posts/2021-05-03-cleaning-cc64.html
Normal file
124
_posts/2021-05-03-cleaning-cc64.html
Normal file
@ -0,0 +1,124 @@
|
||||
---
|
||||
title: Cleaning Up CC64
|
||||
titleshort: Cleaning Up CC64
|
||||
author: IanSkinner1982
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<style>
|
||||
code {
|
||||
font-family: Consolas,"courier new";
|
||||
color: crimson;
|
||||
background-color: #f1f1f1;
|
||||
padding: 2px;
|
||||
font-size: 70%;
|
||||
}
|
||||
pre {
|
||||
background-color: #f1f1f1;
|
||||
padding: 2px;
|
||||
}
|
||||
</style>
|
||||
<p>This article is to explain how I made Cookie Clicker C64 item buying more efficient. This probably isn’t the most interesting article, but you may enjoy it nonetheless.
|
||||
<br>
|
||||
Here is the layout of a page in the store:
|
||||
<br>
|
||||
<br>
|
||||
<code>1. Print a page in the store
|
||||
<br>
|
||||
2. Buy certain items depending on the pressed key (goes to sections 4-7)
|
||||
<br>
|
||||
3. Switch page if + or - is pressed
|
||||
<br>
|
||||
-------------------------
|
||||
<br>
|
||||
4. item 1 buying code
|
||||
<br>
|
||||
5. item 2 buying code
|
||||
<br>
|
||||
6. item 3 buying code
|
||||
<br>
|
||||
7. item 4 buying code
|
||||
<br>
|
||||
</code>
|
||||
<br>
|
||||
Now, this is for 1 page in a store. The store has over 5 pages… with 4 item buying routines each. Too much code, right? Well that's why I came up with an idea to make it better. First, let me explain how the store looks. You have 3 lines for each item. The setup is as follows:
|
||||
<br>
|
||||
<pre>
|
||||
Item Name Amount Owned Ex. Cursors 69
|
||||
Description of item Adds .1 cookies per second
|
||||
Price of item 1000c
|
||||
</pre>
|
||||
<br>
|
||||
I decided that I would put all the building info in a sequential and save it to a few arrays. (I'd have a name array, a price array, a description array and an amount array) It might not make sense why I did this, but you'll see why soon.
|
||||
Instead of printing a whole page, I'd print the values in the array. So...
|
||||
<br>
|
||||
<br>
|
||||
<code>
|
||||
1. Select a range depending on the page selected. (0-3, 4-7, 8-12, etc)
|
||||
<br>
|
||||
2. Print the values in the range selected for each array
|
||||
<br>
|
||||
I will now add a for...next loop to handle all the menu printing. It will go through the range selected and print the desired values.
|
||||
</code>
|
||||
<br>
|
||||
<br>
|
||||
I have replaced all the page printing code with just 2 parts. (each page display would take 20 or so lines, meaning if I had 5 pages that would be 100 lines. With this new method, I need around 8-10 lines to load the array values, and 9 lines to print any selected page. With 5 pages, that is only 17-19 lines!) I can also add a whole new page just by adding one line of code.
|
||||
<br>
|
||||
Figuring out how to select an item with this new design was tough. I decided to assign a value to each item of the page. (x) If the input was within 1-4, then you will be sent to the buying routine.
|
||||
<br>
|
||||
<br>
|
||||
<code>
|
||||
1. Reset x and read keyboard input
|
||||
<br>
|
||||
2. Exit on a change of the current page or menu
|
||||
<br>
|
||||
3. Enter buying routine if an item was selected. (if x=1-4)
|
||||
</code>
|
||||
<br>
|
||||
<br>
|
||||
This ended up taking 18 lines instead of 50 lines for all the pages. Not a big improvement, but it is still good to clean stuff up.
|
||||
<br>
|
||||
As mentioned earlier, there are four blocks of code for buying items per page. Each bit of code was 6 lines. 6*4*5 is 120 lines. (still assuming I need 5 pages) Yeesh.
|
||||
I have to chop that down.
|
||||
Before, it was like this for each item:
|
||||
<br>
|
||||
<br>
|
||||
<code>
|
||||
1. Compare price and cookies
|
||||
<br>
|
||||
2. Subtract price
|
||||
<br>
|
||||
3. Add gain to gain.
|
||||
<br>
|
||||
4. Update amount owned.
|
||||
<br>
|
||||
5. Add 15% to price.
|
||||
<br>
|
||||
6. Update screen with new price and amount owned.
|
||||
</code>
|
||||
<br>
|
||||
<br>
|
||||
Now, once you have selected a item, it will do this:
|
||||
<br>
|
||||
<br>
|
||||
<code>
|
||||
1. Load the item number. (y=i+x-1) (i is the low number in the range)
|
||||
<br>
|
||||
2. Compare price(y) with your total cookies. (see if you can buy it)
|
||||
<br>
|
||||
3. Subtract price(y) from your cookies. Add the gain to gain(y). Multiply price(y) by 1.15. Add one to the amount owned
|
||||
<br>
|
||||
4. Update the price and amount owned on the screen. (this takes up a few more lines to determine where the item you want updated is)
|
||||
<br>
|
||||
<br>
|
||||
(What is the gain? With Cookie Clicker, an idle game, the game is always adding something to your total amount of cookies. This is your CpS, or in this case, Gain. I made it so each item has its own gain. (in this case, gain(y)) All gains are added, and that is the total gain. The total gain is added to the amount of cookies you have.)
|
||||
</code>
|
||||
<br>
|
||||
<br>
|
||||
Now we have one routine shared by all items. So instead of 120 lines, we end up with 12 lines to handle all the items. If I were to add a thousand more items, it would still only be 12 lines.
|
||||
<br>
|
||||
<br>
|
||||
In all, this took a week to figure out, and a few days to debug. In the end I got it to work, but I had to change a few things. All the ideas here still apply though.
|
||||
<br>
|
||||
Thanks for reading this extremely boring article!
|
||||
</p>
|
||||
11
_posts/2021-05-15-stylizing-the-site.html
Normal file
11
_posts/2021-05-15-stylizing-the-site.html
Normal file
@ -0,0 +1,11 @@
|
||||
---
|
||||
title: Stylizing The Site
|
||||
titleshort: Stylizing The Site
|
||||
author: NinjaCheetah
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<p>So as you've probably noticed if you got this far on the site, we've finally added CSS. For a while (from the start of the website on January 29th, actually) it became a joke of sorts that this site had absolutely no styling. That was mainly because of how annoying CSS can be, and also how bad <a href="https://ninjacheetah.github.io">my other site that uses CSS looks.</a> <sub>Editor's note: this article was written before NinjaCheetah overhauled his site in 2022.</sub></p>
|
||||
<p>What started me off on making this site look better was some free time I had during school just yesterday. I decided to open GIMP and just see if I could create some sort of banner. It ended up coming out really good (in my opinion at least) so I added it to the website. From there, I decided to try and add the nav bar I used on my old site to this one, but this time actually make it look good. From there, I didn't like that the banner and nav bar used Sans-Serif but the body used Times New Roman, so more CSS it was! Eventually, with the help of <a href="/members/ianskinner1982">IanSkinner1982</a>, we managed to get the banner and nav bar to stretch to the edges of the screen which greatly improved how it looked. All I did after that was add the GitHub and Discord link icons, and it was done! (also for the record I have no idea if this is in chronological order)</p>
|
||||
<p>I woke up this morning and had an idea: more banners! So I created banners for the <a href="/programs/">Programs page<a> and the <a href="/members/">Members page</a>, which both also came out pretty good (again, in my opinion at least). So for now, I think that just about wraps up our website "renovation". We will of course still add new things, but there shouldn't be any major changes coming soon.</p>
|
||||
<p>Sorry for the short article, but I felt like it would be better to at least say something about it than nothing.</p>
|
||||
20
_posts/2021-05-17-copyright-issues.html
Normal file
20
_posts/2021-05-17-copyright-issues.html
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
title: Copyright Issues
|
||||
titleshort: Copyright Issues
|
||||
author: NinjaCheetah
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<p><b>DISCLAIMER!</b> This article is about <i>my</i> experiences with false copyright claims. This is not a critique of the copyright system, only of the automatic copyright claim bots used on websites like YouTube or MediaFire.</p>
|
||||
<p><b>Part I: The Claims</b></p>
|
||||
<p>My first experience with a false-positive copyright claim was on YouTube when one of the pieces of music I made in GarageBand caused a video to get claimed. Twice in fact, once for each song I used. Now you would think that I could just appeal these claims with whatever proof they needed, right? Unfortunately this was not the case. (It should be noted that before submitting the appeal, I did my research and I am, in fact, allowed to use the loops provided by GarageBand for personal or commerical use.) Once I submitted the appeals, I was happy to see that the first was withdrawn, however that was short lived when a few days later I discovered that my second appeal had been <i>rejected.</i> (Thinking about it now, I wonder if I could have pursued that further since now a real person was saying that they owned something that they did not.) Another interesting fact about that claim is that I could not find the copyrighted music I supposedly used anywhere online, and believe me, I looked.</p>
|
||||
<p>My second experience wasn't a claim but instead a takedown. I had been hosting downloads for the music that I made in GarageBand (same songs that caused trouble on YouTube) so I could link to the files on my website. I eventually discovered when linking to one of them that they had just been removed with 0 warning and could no longer be downloaded. Below is an image of what you get if you <a href="https://www.mediafire.com/file/rrjlp7nc3mowrji/Da_Song.m4a/file">visit the download page</a>.</p>
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2021-05-17/blog-copyright1.png" style="max-width: 100%;">
|
||||
<p>If you're interested, <a href="https://cdn.ncxprogramming.com/file/blog/2021-05-17/blog-dasong.m4a">here's the song I uploaded.</a> Definitely not what it says it was.</p>
|
||||
<p><b>Part II: Why These Claims Happen</b></p>
|
||||
<p>Most of these sites, especially ones like YouTube and Twitch, use bots that check audio in your video against samples of copyrighted music. The biggest issue with this system is that if any other sound matches a sample, the video or stream will be claimed. Here's a <a href="https://screenrant.com/twitch-streamers-dmca-sound-effects/">ScreenRant article about it.</a> (Not endorsing ScreenRant or their content, it was just the first good article I found about the issue.) The reason these false claims make it through is that there's nobody checking them, as soon as the bots detect something it thinks should be a claim, it just goes through with that. Programs aren't perfect, but it sure seems like they expect them to be. Judging from which of my songs were claimed, the reason was most likely that they contained a loop that was present in the copyrighted music that was supposedly playing.</p>
|
||||
<p><b>Part III: Fixing The System</b></p>
|
||||
<p>So now we're at the part where I give my thoughts about how this issue could be fixed. Remember that these are <i>my opinions</i> about this could be done. The first and most obvious solution is to <u>have the claims verified by a real person.</u> I would imagine that a large number of these false claims would stop happening if there were people who could check these and notice that the claimed content sounds nothing like the music that supposedly is being used.</p>
|
||||
<p>Another, albiet more difficult, solution would be to improve or change the way these bots compare the source content to the copyrighted content. Evidently the "sampling" method leaves too much of a margin of error. One of the most obvious issues with it is that there are plenty of loops that you can either buy once or just use for free and if they're used in a piece of copyrighted music, then any content uploaded that contains that same loop will be claimed, as I've experienced firsthand.</p>
|
||||
<p>Now obviously I don't make copyright claim bots, so I don't understand everything about how they work. I'm just hoping that my thoughts (and the thoughts of many others too) won't fall on deaf ears.</p>
|
||||
<p>And with that, we've come to the end of this article. I know that this article was less fun for exciting compared to the Wii DVD Icon adventures, but this is something that I've wanted, needed really, to talk about for a while. -NinjaCheetah</p>
|
||||
26
_posts/2021-08-14-moving-on.html
Normal file
26
_posts/2021-08-14-moving-on.html
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
title: Moving On
|
||||
titleshort: Moving On
|
||||
author: NinjaCheetah
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<p>All good things must come to an end. And for me, that thing is my time working with C#. In this article I will outline my reasons for abandoning C# as well as what will happen with my C# programs.</p>
|
||||
<h3>I. Why I'm Leaving It</h3>
|
||||
<p><b>1. Free as in beer</b></p>
|
||||
<p>One of my biggest issues with C# is the lack of open source. While all of my C# code is open, nothing about the language or its tools are. It's a proprietary language that uses proprietary tools and, if you're making a GUI app, only runs on a proprietary OS. So yes it may be free to use, but it offers no freedom.</p>
|
||||
<p>With a language like C, there are options for what compiler you want to use because nothing about the language is proprietary. Or if, for example, let's say you'd like to make a GUI in C. You have several options, such as GTK+, which is an open source solution. When you're programming in C#, you have to use Microsoft's proprietary compiler and one of Microsoft's proprietary GUI frameworks, if you intend to make a GUI app.</p>
|
||||
<p><b>2. Platforms</b></p>
|
||||
<p>Another large issue I have is OS compatibility. C# desktop apps run only on Windows, and even then you have to install the .NET 5/Framework Desktop Runtime first. C# console apps can be run on Linux and macOS in addition to Windows, however you still need the .NET 5/Framework Runtime installed and you need launch the apps with the <code>dotnet run</code> command in the terminal.</p>
|
||||
<p>On the other side, C code can be written to work on multiple platforms, and even if the same code won't you can (usually) make adjustments to let it run different code on different operating systems. (Of course Windows support can be a lot harder due to it not being POSIX compliant, read more about that <a href="/blog/pages/2021-08-16-c-on-windows">here</a>). C code also just runs on whatever OS it's compiled for, no need for any frameworks or runtimes, only the libraries for your program (and unless you're doing something crazy, a lot of common libraries you want to use might already be installed).</p>
|
||||
<p><b>3. Abandoning Windows</b></p>
|
||||
<p>My final reason for leaving C# behind is that I'd like to leave Windows behind, quite possibly for good. Since none of the GUI designer tools, <i>cough</i> Visual Studio <i>cough</i>, run on Linux or macOS (the 2 operating systems I will still have access to), then that leaves me with no way to continue developing my C# apps. And that brings me to the second part of this article:</p>
|
||||
<h3>II. What will happen to my projects</h3>
|
||||
<p><b>CSharpCollection</b></p>
|
||||
<p>I'll keep this short. I have no intentions to continue developing CSharpCollection, or to pass it on to another developer. It is a test app and nothing more.</p>
|
||||
<p><b>NCX-Core, XStore and NCX-News</b></p>
|
||||
<p>While I, and by extension, NCX Programming, will still own the project, it is being passed on to <a href="https://github.com/rolfiee">Rolfie</a>, who will handle any future development or maintaining work. She will also be maintaining XStore. NCX-News will still be managed and updated by NCX Programming.</p>
|
||||
<p><b>XWare</b></p>
|
||||
<p>Like with NCX-Core, XWare will be passed on to <a href="https://github.com/rolfiee">Rolfie</a> as well.</p>
|
||||
<h3>III. Closing words</h3>
|
||||
<p>I'd like to wrap up this article by saying that this is by no means the end of any major NCX Programming projects. There will be more to come in the future, even if I don't know what they'll be now. That's all for now, and I'll be back next time with a fun Microsoft rant.</p>
|
||||
21
_posts/2021-08-16-c-on-windows.html
Normal file
21
_posts/2021-08-16-c-on-windows.html
Normal file
@ -0,0 +1,21 @@
|
||||
---
|
||||
title: The Problems With C On Windows
|
||||
titleshort: C On Windows
|
||||
author: NinjaCheetah
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<p><i>This will be a short article.</i></p>
|
||||
<p>As much as I like using C, I have one big issue with it. And that problem is Windows.</p>
|
||||
<p><b>1. Libraries</b></p>
|
||||
<p>Compared to macOS and Linux, installing/obtaining libraries to use on Windows is difficult. If you're on a Debian or Arch system, you have <code>apt</code> or <code>pacman</code>, respectively. If you're on macOS, you have a few options, such as my package manager of choice, <code>brew</code>. But on Windows? You don't have those options. You have to find and download those libraries yourself in order to use them in your program. Now is this a huge deal? No, not really. It's just inconvenient, compared to macOS and Linux where you'll always be using the latest libraries, and they can be installed with one command.</p>
|
||||
<p><b>2. POSIX Compliance</b></p>
|
||||
<p>Windows is not POSIX Compliant.<sup>[1]</sup> Now what does this mean? <a href="https://en.wikipedia.org/wiki/POSIX">"The Portable Operating System Interface (POSIX) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems."</a><sup>[1]</sup> One particular POSIX standard that it doesn't meet is the C POSIX standard,<sup>[2]</sup> which is what causes me issues. Because Windows does not follow these standards, it doesn't include many of the standard C libraries, and instead forces you to use the proprietary Windows libraries. While this isn't inherently a bad thing, it does kill compatibility between Linux/macOS and Windows. This deters me from making Windows-compatible software because I need to rework a lot of code to do it. With macOS and Linux the changes I need to make are often either minor or nonexistent.</p>
|
||||
<p><b>3. Compiler</b></p>
|
||||
<p>Tying in with the previous section, Windows requires its own proprietary compiler because it needs to be able to include the Windows libraries.</p>
|
||||
<p><b>Finishing Off</b></p>
|
||||
<p>Overall, if you intend to only make Windows programs, there's no reason to not use C. However if, like me, you want to make programs that run on multiple operating systems, you'll have to write completely different versions for POSIX compliant and non-POSIX compliant systems.</p>
|
||||
<hr>
|
||||
<p><b>Sources</b></p>
|
||||
<p>1. <a href="https://en.wikipedia.org/wiki/POSIX">POSIX</a> Wikipedia, retrieved on August 15, 2021.</p>
|
||||
<p>2. <a href="https://en.wikipedia.org/wiki/C_POSIX_library">C POSIX library</a> Wikipedia, retrieved on August 16, 2021.</p>
|
||||
26
_posts/2021-08-22-history-of-thevaultc.html
Normal file
26
_posts/2021-08-22-history-of-thevaultc.html
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
title: The History of theVaultC
|
||||
titleshort: The History of theVaultC
|
||||
author: NinjaCheetah
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<p>I've decided that it's probably a good idea for me to take a break from the rant-type articles and write something a little more fun. So here it is! The history of our project theVaultC, up through the day this article comes out.</p>
|
||||
<h3>I. theVault (The C# One)</h3>
|
||||
<p>Before theVaultC, my equivalent project was theVault, which was written in C#. The only projects it had were GuessMyNumber, GraphicStuff, and helloWorld. GuessMyNumber and GraphicStuff in theVault are almost identical to the theVaultC versions. HelloWorld was not remade because I didn't think there was any reason to remake that, as it was written when I was actually new to C# console apps, and was actually a test. By the time I started on theVaultC, I was already past that point with C.</p>
|
||||
<p>I finally decided to abandon theVault when I decided to slow down (so that I could eventually stop) my work on C# programs. I archived it on March 19, which was the same day I had set up a workflow on the theVaultC repo, getting it to the point where it was practical to have it as a full replacement. The programs in it at that point were equal to the ones in theVault.</p>
|
||||
<h3>II. theVaultC</h3>
|
||||
<p>I decided to create theVaultC when I was learning C and wanted to create something to both test and show off my skill with C. I wanted to be able to replace theVault with it so I worked on creating versions of those programs in C. That is more or less all the history behind the program itself. In the next section I'm going to talk about the histories of each program in theVaultC.</p>
|
||||
<h3>III. theVaultC's Programs</h3>
|
||||
<p><b>GuessMyNumberC and GraphicStuffC</b></p>
|
||||
<p>I'm grouping these two together because they have the same history. As I've already mentioned, these were recreations of the theVault programs.</p>
|
||||
<p><b>PrintUnixTime</b></p>
|
||||
<p>PrintUnixTime was originally a quick test that I made when I was learning how to seed random numbers using <code>time(0)</code>. After learning how it worked, I constructed it to print the number of seconds since Unix time "began" (also known as the Unix Epoch<sup>[1]</sup>) on 1 January 1970. I made this example program that just read the value from <code>time(0)</code> and printed it as a cool way to check how many seconds it's currently at, and then decided to add to theVaultC.</p>
|
||||
<p><b>RNGTool</b></p>
|
||||
<p>RNGTool (also known as the theVaultC program that has a name that is way too cool for what it is) is a program that generates random numbers. It also lets you enter a maximum and minimum number that you'd like be generated. I only created it because I had been working on random number generation when optimizing GuessMyNumberC, and wanted to use it in another program just for fun.</p>
|
||||
<p><b>WordGenerator</b></p>
|
||||
<p>WordGenerator is a (from the outside) simple-seeming program, that was actually the hardest to make by far out of all the theVaultC programs. I needed quite a bit of help from <a href="https://github.com/Garhoogin">Garhoogin</a> and <a href="https://github.com/Jonatan6">Jonatan6</a>, but in the end I got it done. It reads a list of words (conveniently located in a file named <code>words.txt</code>) and then picks a random selection of words from that list (the number of words it picks is random too!) and prints them. I don't quite remember when I first thought about this program, but it had been floating around for a while by the time that I finally got around to it.</p>
|
||||
<p>I hope you found this little dive into the history of theVaultC interesting! Any questions? Feel free to <a href="mailto:github@ncxprogramming.com">shoot us an email!</a>
|
||||
<hr>
|
||||
<p><b>Sources</b></p>
|
||||
<p>1. <a href="https://en.wikipedia.org/wiki/Unix_time">Unix time</a> Wikipedia, retrieved on August 22, 2021</p>
|
||||
15
_posts/2021-09-21-unsupported-mac-adventures.html
Normal file
15
_posts/2021-09-21-unsupported-mac-adventures.html
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Unsupported Mac Adventures
|
||||
titleshort: Mac Adventures
|
||||
author: NinjaCheetah
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<p>So as a fun way to document my work on my MacBooks, I thought I'd make a blog article out of them. Blog articles that are actually about our software will be coming soon.</p>
|
||||
<h3>Part 1: My First Macbook</h3>
|
||||
<p>The first old Mac I had to work on was my parents old 2010 White Unibody MacBook (Model identifier <code>MacBook7,2</code>) with 4GB of RAM, a 500GB HDD and a 2.4GHz Core 2 Duo CPU. The title of this part has a double meaning of sorts. It was indeed the first MacBook I experimented with, but it was also the first MacBook I ever used (and also the first computer I really used) and is what really got me interested in computers, so it's pretty cool that I've now come back to it.</p>
|
||||
<p>When I first pulled it out, all I knew about was <a href="http://dosdude1.com/mojave/">dosdude1's Mojave patcher</a>, so my intention was just to install Mojave and then tinker with that. The installation was relatively uneventful, other than the minor stress I had from doing a BootROM update (since an interruption could brick your Mac!). I only had to do that update because this Mac was still running the macOS (or more accurately, Mac OS X) version that it came with, 10.6 Snow Leopard, and so it never got the APFS support update that I needed for Mojave updates to work, otherwise I would have avoided it.</p>
|
||||
<p>After a while, I wanted some programs (mostly just Xcode) that needed Catalina, so I decided to check the compatibility list for <a href="http://dosdude1.com/catalina/"> dosdude1's Catalina patcher</a>... Lo and behold, my Mac was on the list! So I immediately went and downloaded the patcher and began preparing my USB, making sure to get a backup first (I learned my lesson after one of my laptops' HDD failed). Attempting to upgrade failed, but luckily one fresh install and a restore later and I had Catalina up and running with all my files, and that was enough for me.. For about a month.</p>
|
||||
<p>Mostly by chance, I went to check on the MacRumours <a href="https://forums.macrumors.com/threads/macos-11-big-sur-on-unsupported-macs-thread.2242172/">macOS 11 Big Sur on Unsupported Macs</a> thread, and discovered that someone going by ASentientBot had added Graphical Acceleration back to older, non-metal GPUs, and mine was one of the ones it supported! So, like before, I made a backup and got to work getting my USB all set up. This time I was using <a href="https://github.com/dortania/OpenCore-Legacy-Patcher">OpenCore Legacy Patcher</a> instead of an OS patcher like dosdude1's, which allowed system updates without having to re-patch the system (possibly excluding the GPU Acceleration patches, I never got a chance to test that). This process was a lot more of a headache than for Mojave and Catalina. My biggest issue was that once I had Big Sur installed, it would lock up on boot when the progress bar was about 1/3 of the way across. I eventually figured out that the NVRAM needed to be reset, and since then that Mac has been running Big Sur about as smoothly (or likely more so) than you'd expect for an 11 year old Mac. It's honestly quite impressive that such an old Mac can still run the latest macOS version without too much trouble.</p>
|
||||
<p>So for now, that's all. At some point in the future (might be the next article, might not be) I'll continue this and will talk about my new(ish) MacBook Pro and the adventures I've had getting Big Sur running on that one.</p>
|
||||
<p>Also, here's a fun fact: almost every article on this blog was written on that 2010 White MacBook!</p>
|
||||
17
_posts/2021-10-01-unsupported-mac-adventures-2.html
Normal file
17
_posts/2021-10-01-unsupported-mac-adventures-2.html
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Unsupported Mac Adventures Part 2
|
||||
titleshort: Mac Adventures 2
|
||||
author: NinjaCheetah
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<h3>Part 2: My First Personal MacBook</h3>
|
||||
<p>The second old (but newer than the other!) Mac that I had was a 2012 Unibody MacBook Pro (Model identifier <code>MacBookPro9,2</code>) with 4GB RAM, a 500GB HDD, and a 2.5 GHz Dual-Core Intel Core i5 CPU. This MacBook Pro was the first MacBook that was actually mine as the 2010 White MacBook is still my parents'.</p>
|
||||
<p>When I got this one, I already knew that I'd need <a href="https://github.com/dortania/OpenCore-Legacy-Patcher">OpenCore Legacy Patcher</a> to patch it. The nice thing about this Mac is that it supports Apple's Metal API, meaning that it could do graphical acceleration in Big Sur wthout any patches (so I can use System Integrity Protection and Secure Boot Model!). Before patching though, I took the SSD out of my ThinkPad, which is a Samsung EVO 960, and put it in the Mac. I tried using it with the 5400RPM HDD that it came with in Catalina and it was too slow for me, especially coming from an SSD in my old Mac.</p>
|
||||
<p>The initial patching went fine and I had Big Sur up and running without any issues. However, after updating from Big Sur 11.5.2 to Big Sur 11.6, I started to notice crashing. Apps and system processes would experience a memory leak of some kind, and then would crash itself and other programs until I either rebooted or a kernel panic occurred (I later discovered that the 11.6 update had no relevance). I tried debugging it by changing some OCLP settings and repatching, but it wouldn't help. My next idea was that maybe my backup, which came from my original patched Mojave install and had been updated through every version since, was causing problems because of all the potentially left over patches. Unfortunately a clean install of 11.6 didn't fix it.</p>
|
||||
<p>After that I decided to wipe and do a fresh install of 11.5.2, because at this point I thought that the software update had caused my issues. Judging from the fact that the crashing still happened, it was safe to say that 11.6 wasn't the issue.</p>
|
||||
<p>I then turned my attention to potential hardware problems. The first and easiest thing to try was putting the HDD back in and installing Big Sur to that, just in the off chance that something was wrong with my SSD (not that I though there was, since it was relatively new). No luck there. I then ran <a href="https://www.memtest86.com">memtest86</a>, a free bootable environment for testing RAM, and all 4 passes passed the tests. So for the time being, I just gave up and accepted that I'd have to deal with the crashing.</p>
|
||||
<p>Luckily, someone in the OCLP discord server knew of the issue and said you could use the command <code>sudo purge</code> to purge the leaking memory, effectively fixing the issue for the time being (it would still come back eventually). Since I couldn't open apps while it was crashing, I enabled SSH and created a shortcut in the Shortcuts app on my iPhone to run <code>sudo purge</code> over SSH right from my home screen whenever I needed it, which worked pretty well. I later created an Automation quick action workflow on the Mac itself so that I could run my workflow just by pressing a key combination. This would let me stop a crash that had already quit all my apps but hadn't killed Finder yet (as I needed at least one app to be open to run the workflow).</p>
|
||||
<p>So, what now? At this point this is what I was wondering because I just couldn't figure out what was wrong. That is until someone suggested to me that my RAM might be bad, as they had RAM that was bad but could pass memtest86. So, like with the SSD, I stole the 8GB of RAM from my ThinkPad and put it in my Mac.</p>
|
||||
<p>And that brings us to now, where I'm writing this article on my seemingly no longer crashing Mac. Will this be the end? I hope so. If it's not, expect a part 3 ;)</p>
|
||||
<p>Another fun fact: most of RNGTool's code was written on this 2012 MacBook Pro! (the entire Jekyll conversion for this site was done on here too!)</p>
|
||||
25
_posts/2021-12-07-giving-ncx-core-cpr.html
Normal file
25
_posts/2021-12-07-giving-ncx-core-cpr.html
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
title: Giving NCX-Core Some CPR
|
||||
titleshort: Giving NCX-Core CPR
|
||||
author: NinjaCheetah
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<p><i>Welcome back to another edition of I Don't Stick With Anything.</i></p>
|
||||
<p>I went back on my decision to completely stop using Windows because some stuff still absolutely requires it. <i>Chilling, isn't it?</i></p>
|
||||
<h3>Atrocity #1: The Code</h3>
|
||||
<p>Since I was already here using Windows 10 again (however it's the LTSC 2021 version so less telemetry and no Windows Store at least) I figured that I'd pop in and look at how NCX-Core's code was holding up (with the "new" and exciting VS2022!); this was my first mistake. Now to be fair I acknowledged that the code was bad when I first wrote it, but I hadn't quite realized just how severe it truly was. Most likely the worst (publically available) code I've ever written and ever will write. But hey, it was one of my first major projects so I can't be too hard on it.</p>
|
||||
<p>Honestly I didn't do a lot to fix the code, but I did finally correct all of the incorrect file paths that would cause the program to inexplicably crash whenever it tried to access them since I continue to put off error handling. I also fixed a decent bit of inefficient code and removed a bunch of feature stubs that were just taking up space. Oh and button code stubs. There was a large amount of those for some reason.</p>
|
||||
<h3>Atrocity #2: The GUI</h3>
|
||||
<p>The GUI was the next thing I took another look at. Now, <i>overall</i> the GUI isn't awful. Yes, the fact that the Library has hardcoded icon positions is dumb and since even <i>I</i> don't have CSharpCollection installed, there's always an awkward gap in the first slot. The About screen is also not nice to look at. Oh and the Settings screen is far too empty. Like really.</p>
|
||||
<p>The real issue with the GUI is all of the photo-based elements. This includes all of the buttons, menu bar items and program icons. If you weren't already aware, all of the buttons are PNGs. Really big PNGs. Like, really big.</p>
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2021-12-07/what-is-this-res.png" style="margin-left:8px;" alt="Image showing the resolution of the image is 1700x1100.">
|
||||
<p>Yeah... And for some reason, I expected this to scale down to 104x66 for some reason (let's just ignore this bizarre resolution). I believe I though that the bigger the image the better it would scale down? I'm not even really sure at this point. So I decided step one for fixing this mess would be to create some brand new assets, this time as vector graphics so they'd scale down nicely. (Read 'A Love Letter to Vector Graphics' which may or may not ever come out for that backstory.) Since these are vector graphics, it means geometric shapes, which means that not only do they scale better but they also just look nicer to begin with. If you'd like to see a fun comparison, <a href="https://cdn.ncxprogramming.com/file/internal/NCX-Core%20Asset%20Pack.zip">click here</a> to download <code>NCX-Core Asset Pack.zip</code> from our not-CDN that has the old assets and the new ones.</p>
|
||||
<p>With all of the new assets in, I can say that NCX-Core is now at least slightly less painful to use (not that anyone does anyway). Yay.</p>
|
||||
<h3>The State of NCX-Core and its Future</h3>
|
||||
<p><b>Can it be used?</b></p>
|
||||
<p>Yes, but it's not very useful to anyone. I've made enough changes that it's now relatively usable. The issue is just that there's no real need for it.</p>
|
||||
<p><b>If that's the case then what's going to happen to it?</b></p>
|
||||
<p>I honestly don't know. My current plan is to finish polishing what's there and release it as v3.2, and then leave it. It's an important piece of "programmer history" so it's not going to get deleted or be privated. For now it's also not going to be archived. So if I ever decide to pick it up and use it's code for something new it's there.</p>
|
||||
<h3>Wow this was kind of sad</h3>
|
||||
<p>Yeah I know. But, officially saying this is done-ish means I'm finally going to stop holding out on NCX-Core-Lite and work on a proper big program, so stay tuned!</p>
|
||||
11
_posts/2021-12-07-love-letter-to-svgs.html
Normal file
11
_posts/2021-12-07-love-letter-to-svgs.html
Normal file
@ -0,0 +1,11 @@
|
||||
---
|
||||
title: Love Letter to Vector Graphics
|
||||
titleshort: Love Letter to SVGs
|
||||
author: NinjaCheetah
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<p>I finally reached that point in my life where I learned what an SVG is! Not sure how I made it this far without that knowledge.</p>
|
||||
<p>If you don't know what vector graphics are, I suggest reading <a href="https://en.wikipedia.org/wiki/Scalable_Vector_Graphics">Wikipedia - Scalable Vector Graphics</a> first. To sum it up briefly, SVGs are made of geometric shapes instead of pixels so they can be easily scaled up without losing quality.</p>
|
||||
<p>Currently I'm only making brand new images as SVGs, but I intend to remake some other old images, especially the banners on this site. If you have a really big monitor (or at least one that's really high res), you can really see this difference by visiting either <a href="/">the homepage</a> or <a href="/programs">the programs page</a> and then <a href="/products/icons">our icon sales page</a> <i>(hmm what could this be)</i> and scroll down to the banner. Now, uh, I don't have a high-res screen (in fact my MacBook Pro is the last pre-Retina display) so I have no idea if this will work. But it probably should. Feel free to yell at me in an issue or something if this doesn't work.</p>
|
||||
<p>That's all for now. Look forward to some scalable goodness in the near future.</p>
|
||||
32
_posts/2022-01-07-bringing-rngtool-to-phones.html
Normal file
32
_posts/2022-01-07-bringing-rngtool-to-phones.html
Normal file
@ -0,0 +1,32 @@
|
||||
---
|
||||
title: Bringing RNGTool to Your Pocket (Kinda)
|
||||
titleshort: Bringing RNGTool to Phones
|
||||
author: NinjaCheetah
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<p>hey look, the first article of the year! happy new year!</p>
|
||||
<p>So, what have I been up to recently (in terms of programming)? Mostly improving RNGTool. Since I've gotten more comfortable with Swift, it's started to push me away from C a little bit. Now I'm sure I'll return to it eventually, but for now this means I'm working on RNGTool and my websites exclusively. But hey, that means that RNGTool is becoming more usable!</p>
|
||||
<p><b>Some quick clarification:</b> since this is Swift, the only pockets RNGTool is coming to are the ones with iPhones (or iPods (or even iPads if you have <i>really</i> big pockets)) in them. Sorry Android users.</p>
|
||||
<p>So I finally made the realization that one can actually deploy iOS apps to their iDevices for testing. For some reason I genuinely thought you had to be an Apple Developer to even run your own app on your phone. Whoops. I also realized like 2 months later that I can actually run iDevice simulators on my Mac without much trouble so this wasn't even really an issue in the end.</p>
|
||||
<p>Armed with this new information, I decided it was about time that I tried to port RNGTool to iOS. It's something that I've always wanted to do since I first created it but because of the afformentioned testing issues I didn't have a good way to make sure it actually did what it was supposed to. The basic porting process wasn't actually too hard. The beauty of Swift is that <i>most</i> code will work on all Apple platforms (especially since macOS 11.0, which added some previously iOS-specific features to Mac). At first the iOS version was actually just the macOS Swift files for the modes and settings with a new view listing. And then it got hard.</p>
|
||||
<p>While my basic direct code porting was fine to get a working prototype, most of the UI was not really that usable. You can see this early UI below.</p>
|
||||
<div style="display:inline-block;padding-left:8px;">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-01-07/rngtool-mobile-mode-list-beta.jpg" width="15%">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-01-07/rngtool-mobile-marble-mode-beta.jpg" width="15%">
|
||||
</div>
|
||||
<p>And thus began the quest to make RNGTool usable. I started with the settings, as they were a trainwreck that I unfortunately don't have any pictures of (and it was never committed to GitHub so it's long gone). These actually came out pretty well in the end. I managed to keep using the exact same code in both the macOS and iOS versions, just with different wrappings around the actual settings in the two <code>SettingsView.swift</code> files. The result is something arguably nicer to use than the macOS version, though I'll let you judge that for yourself.</p>
|
||||
<div style="display:inline-block;padding-left:8px;">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-01-07/rngtool-mobile-settings1.png" width="15%">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-01-07/rngtool-mobile-settings2.png" width="15%">
|
||||
</div>
|
||||
<p>Next on the to-do list was to make brand new mobile-focused UIs for the actual generator modes. I tried to do what I did with the settings but it just wasn't working out; the UI needed to be basically redesigned from the ground up to work well on screens as small as 4 inches diagonally (looking at you, iPod Touch 7th gen). The easiest place to start was the text, so I shrank it all down until it was small enough to fit comfortably without being so small that it was hard to read. Then it was time to address the controls.</p>
|
||||
<p>The annoying thing with the controls is that on macOS you really <i>have</i> to add extra properties to make them look decent. On iOS, however, that isn't an issue an raw controls look fine, excluding the buttons. The buttons needed some extra tinkering but what I came up with ended up looking pretty good, which is really only because all of my buttons use SF Symbols rather than text, so adding a rounded border was enough to make them big enough to press.</p>
|
||||
<p>So by this point we've got working settings and working control (and of course functional number generation). What could possibly be left? Images.</p>
|
||||
<p>While I briefly considered dropping the the dice and card images, I just felt like it would be weird since that was a feature I put a lot of time into on macOS. Thankfully, for literally the first time ever (that I can remember), math was useful in my code. Incredible, isn't it? I figured out how to read the usable screen size, and then used some fancy math to scale the dice and cards (as well as set the card offsets) to fit your screen nicely. The results can be seen below.</p>
|
||||
<div style="display:inline-block;padding-left:8px;">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-01-07/rngtool-mobile-dice-mode.png" width="15%">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-01-07/rngtool-mobile-card-mode.png" width="15%">
|
||||
</div>
|
||||
<p>So with that, RNGTool on iOS reached what it is today (more or less, new features have been added that I'm not mentioning here because they weren't part of the inital port). Now, about the "Kinda" in the title. Unfortunately, as I'm not an Apple Developer, I can't publish the app on the App Store or really distribute it at all. So if you want to run it, you'll either need a Jailbroken device on iOS 15 (which is not currently possible) or a sideloading method like <a href="https://sideloadly.io">Sideloadly!</a> or <a href="https://altstore.io">AltStore</a>. I won't be covering that here, but neither of those programs are particularly hard to use, so it shouldn't be hard to get RNGTool installed. Downloads can be found in the <a href="https://github.com/NCX-Programming/RNGTool/releases/latest">latest release</a> or as a build artifact in the latest <a href="https://github.com/NCX-Programming/RNGTool/actions">GitHub Actions run</a>.</p>
|
||||
<p>That's all for now! Hopefully it won't be a full month between articles next time.</p>
|
||||
24
_posts/2022-02-01-bringing-rngtool-to-apple-watch.html
Normal file
24
_posts/2022-02-01-bringing-rngtool-to-apple-watch.html
Normal file
@ -0,0 +1,24 @@
|
||||
---
|
||||
title: Bringing RNGTool to Your Wrist (Maybe)
|
||||
titleshort: Bringing RNGTool to Apple Watches
|
||||
author: NinjaCheetah
|
||||
layout: blogpage
|
||||
---
|
||||
|
||||
<p>Hmm this title sounds familiar...</p>
|
||||
<p>More RNGTool updates! This time I'm porting RNGTool to watchOS rather than iOS. And it's interesting. The most difficult part of this is dealing with the limited screen real estate that the Apple Watch has. The solution? Cutting out the fat.</p>
|
||||
<p>RNGTool is by no means a visually simple app. I've definitely overcomplicated its UI. This gives me a good chance to really cut out any parts of the app's UI that aren't needed so that you can fit the parts that matter. The actual process of porting the app's code was a lot easier than from macOS to iOS because most of the parts that aren't support on watchOS were being removed anyway, so I won't go over it here.</p>
|
||||
<p>Here's the interesting part, a comparison of the iOS and watchOS apps:</p>
|
||||
<div style="display:inline-block;padding-left:8px;">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-02-01/rngtool-mobile-number-mode.png" width="20%">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-02-01/rngtool-wrist-number-mode.png" width="15%">
|
||||
</div>
|
||||
<div style="display:inline-block;padding-left:8px;">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-02-01/rngtool-mobile-dice-mode.png" width="20%">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-02-01/rngtool-wrist-dice-mode.png" width="15%">
|
||||
</div>
|
||||
<div style="display:inline-block;padding-left:8px;">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-02-01/rngtool-mobile-about.png" width="20%">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-02-01/rngtool-wrist-about.png" width="15%">
|
||||
</div>
|
||||
<p>Unfortunately those are all of the screens I've completely finished at this point. I will likely make a post updating on when I finish the rest.</p>
|
||||
258
_site/2021/01/29/hello-blog.html
Normal file
258
_site/2021/01/29/hello-blog.html
Normal file
@ -0,0 +1,258 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Welcome to the Blog | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="Welcome to the Blog">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Welcome to the Blog | rmc's site">
|
||||
<meta property="og:description" content="Welcome to the Blog | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>Welcome to the Blog</h1>
|
||||
<h3>2021-01-29</h3>
|
||||
<h4>NinjaCheetah</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<p>Hello, and welcome to the NCX Programming blog! We plan to write about all sorts of tech nonsense here. Stay tuned for the first article, which will be about the Wii!</p>
|
||||
<p>For now, that's all I have to say. Our first articles should be coming out soon.</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
270
_site/2021/01/30/wii-dvd-p1.html
Normal file
270
_site/2021/01/30/wii-dvd-p1.html
Normal file
@ -0,0 +1,270 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Enabling the Hidden Wii DVD Icon Part 1 | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="Enabling the Hidden Wii DVD Icon Part 1">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Enabling the Hidden Wii DVD Icon Part 1 | rmc's site">
|
||||
<meta property="og:description" content="Enabling the Hidden Wii DVD Icon Part 1 | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>Enabling the Hidden Wii DVD Icon Part 1</h1>
|
||||
<h3>2021-01-30</h3>
|
||||
<h4>NinjaCheetah</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<p>NOTE: This article was originally written in OneNote and was not altered before being uploaded here. Please excuse formatting errors.</p>
|
||||
<p>Unsurprisingly, this is more easily said than done. To do this, you need to modify the Disc Channel’s BRLYT file (“Binary Revolution Layout” file), which is contained in the diskBann.ash file, which can be found at</p>
|
||||
<p> | 00000001/layout/common/diskBann.ash</p>
|
||||
<p>and the BRLYT file is stored inside that at</p>
|
||||
<p> | diskBann/arc/blyt/</p>
|
||||
<p>Once you’re there and can write to the file, it’s just a matter of changing a 00 to a 01.</p>
|
||||
<p><b>1. Obtaining the Necessary Files</b></p>
|
||||
<p>The first thing I needed to do is get the Wii System Menu files (in this case I downloaded System Menu 2.0U), using a tool like NUS Downloader to get them right from Nintendo’s servers. I chose to not pack the WAD, and to keep only the decrypted contents. The only file I really needed from this download was 00000001.app, but I kept the rest so that I could pack the WAD later.</p>
|
||||
<p><b>2. Extracting</b></p>
|
||||
<p>Now that I had the file I needed, I had to open it. I ended up using Sharpii’s U8 extraction tool to extract 00000001.app into the directory 00000001. Once I had it extracted, I poked around to see if I could find what I needed to find. Fortunately, that was one of the easiest things I had to do. Once I located the diskBann.ash file that I needed to get into, I had to figure out how to get into it. Eventually I found a tool called Easy CSM, and used its command-line ASH extraction tool to extract diskBann.ash into diskBann.ash.arc (so just an ARC file). I then struggled to figure out what I had to do with that ARC file. I tried using ECSM, but it just crashed, probably because I didn’t understand how it wanted me to set it up. I eventually discovered that the U8 extraction tool that from Sharpii is compatible with ARC files. What luck! Once I understood that, I was able to extract it and look through its files to find what I was looking for.</p>
|
||||
<p>Once I had the BRLYT file in my sights, I finally felt like things were going to work! …until I realized that, like before, I had no idea how to get into this file. I managed to find a guide on banner creation for the Wii, and it has a guide on how to convert a BRLYT file into an XMLYT file (using a tool called Benzin), which I could just open in Notepad. (Pretty sure an XMLYT file is just an XML file - it certainly looks like one.) Once I had it in an acceptable format, I just had to scroll through, find the flag I needed to change, change it, and get out of there.</p>
|
||||
<p><b>3. Recompressing</b></p>
|
||||
<p>I thought the hard part was over. It wasn’t. Now that I had changed what I needed, I needed to stick it all back together so I could use it. Luckily, Benzin could change XMLYT files back into BRLYT files, so that was easy enough. But then I had to figure out how to compress the diskBann folder back into an ASH file. I didn’t have anything that could do that. I was able to compress it into a file that said it was an ASH file using Sharpii, but it was the exact same size as the ARC (which was much larger than the ASH), so it seems to have just created a renamed ARC file. I decided that was probably good enough, since I knew some other files were also just renamed ARC files. The next step, compressing everything back into 00000001.app, wasn’t terrible once I figured out how the command worked. And this is where I hit the roadblock that stopped me. I needed to pack everything into a WAD so that I could actually use it. And the command failed every time. </p>
|
||||
<p>So this is where things end for now. I <i>have</i> experimented more since this, and made more progress, so expect a follow up article at some point.</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
274
_site/2021/04/08/wii-dvd-p2.html
Normal file
274
_site/2021/04/08/wii-dvd-p2.html
Normal file
@ -0,0 +1,274 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Enabling the Hidden Wii DVD Icon Part 2 | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="Enabling the Hidden Wii DVD Icon Part 2">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Enabling the Hidden Wii DVD Icon Part 2 | rmc's site">
|
||||
<meta property="og:description" content="Enabling the Hidden Wii DVD Icon Part 2 | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>Enabling the Hidden Wii DVD Icon Part 2</h1>
|
||||
<h3>2021-04-08</h3>
|
||||
<h4>NinjaCheetah</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<p>Before I get anyone's hopes up, I should state that this <b>did not</b> work. If that disappointment isn't too much for you, I'd love it if you kept reading.</p>
|
||||
<p>So now with that out of the way, I'm sure you're wondering, <b>what did I do differently this time?</b></p>
|
||||
<p><b>1. A different method of obtaining the system files</b></p>
|
||||
<p>The first major change I made, which fixed the biggest issue from last time, was the way I obtained the .app files within the Wii System Menu install WAD. Last time, I chose to just save the decrypted contents in NUS Downloader, however that ended up preventing me from packing the WAD at the end of the process. This time I didn't save the decrypted contents, but instead had NUS Downloader pack the WAD for me. Once I had the WAD, I unpacked it with Sharpii, which left me with <i>almost</i> the same files. The difference is that this time I had the ticket<sup>[Check]</sup> which allowed me to pack the WAD at the end.</p>
|
||||
<p><b>2. Recompressing the archives</b></p>
|
||||
<p>Note: Since this article was written long after I tried the things listed in it, accuracy is not guaranteed.</p>
|
||||
<p>What I tried this time was enabling LZ77 compression on the .arc file, then compressing the .arc again into an .ash, rather than going directly to a .ash. Thanks to my new method of obtaining the Wii Menu files, I was able to pack the WAD no problem and install it. However, once I installed the WAD in Dolphin, problems arose. The initial setup went just fine, as it should have since I didn't mess with those files, however once I tried to select the Disc Channel, it all came crashing down, in a way more literal than I would have liked. Fatal exception. Unfortunately, my .ash recompression method had not worked properly. (For the sake of making sure the WAD itself wasn't the issue, I unpacked, repacked, and installed an unmodified version and it worked just fine.)</p>
|
||||
<p><b>So where does this leave me?</b></p>
|
||||
<p>When I originally started (and then lost) this article back when I did all this, it left me with no leads and nothing else to try, or at least nothing I could think of. Thankfully, a fellow nerd known as <a href=https://github.com/Garhoogin>Garhoogin</a> gave me some extremely valuable information. It turns out I wasn't understanding the Wii's file formats correctly (specfically the .arc and .ash formats). Only .ash files are compressed, whereas .arc files are just archives. That's why adding the LZ77 compression to the .arc didn't help; it's not a compressed file. So now my new plan is as follows:</p>
|
||||
<ol>
|
||||
<li>Do everything I did last time up the the recompression part</li>
|
||||
<li>Pack diskBann/arc into diskBann.arc, <i>without</i> LZ77 compression</li>
|
||||
<li>Compress diskBann.arc into diskbann.ash, <i>with</i> LZ77 compression</li>
|
||||
<li>Put diskBann.ash at 00000001/layout/common/ and compress 00000001.app</li>
|
||||
<li>Pack the WAD and install in Dolphin</li>
|
||||
<li>Profit (in theory)</li>
|
||||
</ol>
|
||||
<p>So, for now I leave you here. Hopefully there will be an update soon, as I intend to follow the plan above in the next few days so that I can make an update to this faster than last time.
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
373
_site/2021/05/03/cleaning-cc64.html
Normal file
373
_site/2021/05/03/cleaning-cc64.html
Normal file
@ -0,0 +1,373 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Cleaning Up CC64 | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="Cleaning Up CC64">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Cleaning Up CC64 | rmc's site">
|
||||
<meta property="og:description" content="Cleaning Up CC64 | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>Cleaning Up CC64</h1>
|
||||
<h3>2021-05-03</h3>
|
||||
<h4>IanSkinner1982</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<style>
|
||||
code {
|
||||
font-family: Consolas,"courier new";
|
||||
color: crimson;
|
||||
background-color: #f1f1f1;
|
||||
padding: 2px;
|
||||
font-size: 70%;
|
||||
}
|
||||
pre {
|
||||
background-color: #f1f1f1;
|
||||
padding: 2px;
|
||||
}
|
||||
</style>
|
||||
<p>This article is to explain how I made Cookie Clicker C64 item buying more efficient. This probably isn’t the most interesting article, but you may enjoy it nonetheless.
|
||||
<br>
|
||||
Here is the layout of a page in the store:
|
||||
<br>
|
||||
<br>
|
||||
<code>1. Print a page in the store
|
||||
<br>
|
||||
2. Buy certain items depending on the pressed key (goes to sections 4-7)
|
||||
<br>
|
||||
3. Switch page if + or - is pressed
|
||||
<br>
|
||||
-------------------------
|
||||
<br>
|
||||
4. item 1 buying code
|
||||
<br>
|
||||
5. item 2 buying code
|
||||
<br>
|
||||
6. item 3 buying code
|
||||
<br>
|
||||
7. item 4 buying code
|
||||
<br>
|
||||
</code>
|
||||
<br>
|
||||
Now, this is for 1 page in a store. The store has over 5 pages… with 4 item buying routines each. Too much code, right? Well that's why I came up with an idea to make it better. First, let me explain how the store looks. You have 3 lines for each item. The setup is as follows:
|
||||
<br>
|
||||
<pre>
|
||||
Item Name Amount Owned Ex. Cursors 69
|
||||
Description of item Adds .1 cookies per second
|
||||
Price of item 1000c
|
||||
</pre>
|
||||
<br>
|
||||
I decided that I would put all the building info in a sequential and save it to a few arrays. (I'd have a name array, a price array, a description array and an amount array) It might not make sense why I did this, but you'll see why soon.
|
||||
Instead of printing a whole page, I'd print the values in the array. So...
|
||||
<br>
|
||||
<br>
|
||||
<code>
|
||||
1. Select a range depending on the page selected. (0-3, 4-7, 8-12, etc)
|
||||
<br>
|
||||
2. Print the values in the range selected for each array
|
||||
<br>
|
||||
I will now add a for...next loop to handle all the menu printing. It will go through the range selected and print the desired values.
|
||||
</code>
|
||||
<br>
|
||||
<br>
|
||||
I have replaced all the page printing code with just 2 parts. (each page display would take 20 or so lines, meaning if I had 5 pages that would be 100 lines. With this new method, I need around 8-10 lines to load the array values, and 9 lines to print any selected page. With 5 pages, that is only 17-19 lines!) I can also add a whole new page just by adding one line of code.
|
||||
<br>
|
||||
Figuring out how to select an item with this new design was tough. I decided to assign a value to each item of the page. (x) If the input was within 1-4, then you will be sent to the buying routine.
|
||||
<br>
|
||||
<br>
|
||||
<code>
|
||||
1. Reset x and read keyboard input
|
||||
<br>
|
||||
2. Exit on a change of the current page or menu
|
||||
<br>
|
||||
3. Enter buying routine if an item was selected. (if x=1-4)
|
||||
</code>
|
||||
<br>
|
||||
<br>
|
||||
This ended up taking 18 lines instead of 50 lines for all the pages. Not a big improvement, but it is still good to clean stuff up.
|
||||
<br>
|
||||
As mentioned earlier, there are four blocks of code for buying items per page. Each bit of code was 6 lines. 6*4*5 is 120 lines. (still assuming I need 5 pages) Yeesh.
|
||||
I have to chop that down.
|
||||
Before, it was like this for each item:
|
||||
<br>
|
||||
<br>
|
||||
<code>
|
||||
1. Compare price and cookies
|
||||
<br>
|
||||
2. Subtract price
|
||||
<br>
|
||||
3. Add gain to gain.
|
||||
<br>
|
||||
4. Update amount owned.
|
||||
<br>
|
||||
5. Add 15% to price.
|
||||
<br>
|
||||
6. Update screen with new price and amount owned.
|
||||
</code>
|
||||
<br>
|
||||
<br>
|
||||
Now, once you have selected a item, it will do this:
|
||||
<br>
|
||||
<br>
|
||||
<code>
|
||||
1. Load the item number. (y=i+x-1) (i is the low number in the range)
|
||||
<br>
|
||||
2. Compare price(y) with your total cookies. (see if you can buy it)
|
||||
<br>
|
||||
3. Subtract price(y) from your cookies. Add the gain to gain(y). Multiply price(y) by 1.15. Add one to the amount owned
|
||||
<br>
|
||||
4. Update the price and amount owned on the screen. (this takes up a few more lines to determine where the item you want updated is)
|
||||
<br>
|
||||
<br>
|
||||
(What is the gain? With Cookie Clicker, an idle game, the game is always adding something to your total amount of cookies. This is your CpS, or in this case, Gain. I made it so each item has its own gain. (in this case, gain(y)) All gains are added, and that is the total gain. The total gain is added to the amount of cookies you have.)
|
||||
</code>
|
||||
<br>
|
||||
<br>
|
||||
Now we have one routine shared by all items. So instead of 120 lines, we end up with 12 lines to handle all the items. If I were to add a thousand more items, it would still only be 12 lines.
|
||||
<br>
|
||||
<br>
|
||||
In all, this took a week to figure out, and a few days to debug. In the end I got it to work, but I had to change a few things. All the ideas here still apply though.
|
||||
<br>
|
||||
Thanks for reading this extremely boring article!
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
260
_site/2021/05/15/stylizing-the-site.html
Normal file
260
_site/2021/05/15/stylizing-the-site.html
Normal file
@ -0,0 +1,260 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Stylizing The Site | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="Stylizing The Site">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Stylizing The Site | rmc's site">
|
||||
<meta property="og:description" content="Stylizing The Site | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>Stylizing The Site</h1>
|
||||
<h3>2021-05-15</h3>
|
||||
<h4>NinjaCheetah</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<p>So as you've probably noticed if you got this far on the site, we've finally added CSS. For a while (from the start of the website on January 29th, actually) it became a joke of sorts that this site had absolutely no styling. That was mainly because of how annoying CSS can be, and also how bad <a href="https://ninjacheetah.github.io">my other site that uses CSS looks.</a> <sub>Editor's note: this article was written before NinjaCheetah overhauled his site in 2022.</sub></p>
|
||||
<p>What started me off on making this site look better was some free time I had during school just yesterday. I decided to open GIMP and just see if I could create some sort of banner. It ended up coming out really good (in my opinion at least) so I added it to the website. From there, I decided to try and add the nav bar I used on my old site to this one, but this time actually make it look good. From there, I didn't like that the banner and nav bar used Sans-Serif but the body used Times New Roman, so more CSS it was! Eventually, with the help of <a href="/members/ianskinner1982">IanSkinner1982</a>, we managed to get the banner and nav bar to stretch to the edges of the screen which greatly improved how it looked. All I did after that was add the GitHub and Discord link icons, and it was done! (also for the record I have no idea if this is in chronological order)</p>
|
||||
<p>I woke up this morning and had an idea: more banners! So I created banners for the <a href="/programs/">Programs page<a> and the <a href="/members/">Members page</a>, which both also came out pretty good (again, in my opinion at least). So for now, I think that just about wraps up our website "renovation". We will of course still add new things, but there shouldn't be any major changes coming soon.</p>
|
||||
<p>Sorry for the short article, but I felt like it would be better to at least say something about it than nothing.</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
269
_site/2021/05/17/copyright-issues.html
Normal file
269
_site/2021/05/17/copyright-issues.html
Normal file
@ -0,0 +1,269 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Copyright Issues | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="Copyright Issues">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Copyright Issues | rmc's site">
|
||||
<meta property="og:description" content="Copyright Issues | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>Copyright Issues</h1>
|
||||
<h3>2021-05-17</h3>
|
||||
<h4>NinjaCheetah</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<p><b>DISCLAIMER!</b> This article is about <i>my</i> experiences with false copyright claims. This is not a critique of the copyright system, only of the automatic copyright claim bots used on websites like YouTube or MediaFire.</p>
|
||||
<p><b>Part I: The Claims</b></p>
|
||||
<p>My first experience with a false-positive copyright claim was on YouTube when one of the pieces of music I made in GarageBand caused a video to get claimed. Twice in fact, once for each song I used. Now you would think that I could just appeal these claims with whatever proof they needed, right? Unfortunately this was not the case. (It should be noted that before submitting the appeal, I did my research and I am, in fact, allowed to use the loops provided by GarageBand for personal or commerical use.) Once I submitted the appeals, I was happy to see that the first was withdrawn, however that was short lived when a few days later I discovered that my second appeal had been <i>rejected.</i> (Thinking about it now, I wonder if I could have pursued that further since now a real person was saying that they owned something that they did not.) Another interesting fact about that claim is that I could not find the copyrighted music I supposedly used anywhere online, and believe me, I looked.</p>
|
||||
<p>My second experience wasn't a claim but instead a takedown. I had been hosting downloads for the music that I made in GarageBand (same songs that caused trouble on YouTube) so I could link to the files on my website. I eventually discovered when linking to one of them that they had just been removed with 0 warning and could no longer be downloaded. Below is an image of what you get if you <a href="https://www.mediafire.com/file/rrjlp7nc3mowrji/Da_Song.m4a/file">visit the download page</a>.</p>
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2021-05-17/blog-copyright1.png" style="max-width: 100%;">
|
||||
<p>If you're interested, <a href="https://cdn.ncxprogramming.com/file/blog/2021-05-17/blog-dasong.m4a">here's the song I uploaded.</a> Definitely not what it says it was.</p>
|
||||
<p><b>Part II: Why These Claims Happen</b></p>
|
||||
<p>Most of these sites, especially ones like YouTube and Twitch, use bots that check audio in your video against samples of copyrighted music. The biggest issue with this system is that if any other sound matches a sample, the video or stream will be claimed. Here's a <a href="https://screenrant.com/twitch-streamers-dmca-sound-effects/">ScreenRant article about it.</a> (Not endorsing ScreenRant or their content, it was just the first good article I found about the issue.) The reason these false claims make it through is that there's nobody checking them, as soon as the bots detect something it thinks should be a claim, it just goes through with that. Programs aren't perfect, but it sure seems like they expect them to be. Judging from which of my songs were claimed, the reason was most likely that they contained a loop that was present in the copyrighted music that was supposedly playing.</p>
|
||||
<p><b>Part III: Fixing The System</b></p>
|
||||
<p>So now we're at the part where I give my thoughts about how this issue could be fixed. Remember that these are <i>my opinions</i> about this could be done. The first and most obvious solution is to <u>have the claims verified by a real person.</u> I would imagine that a large number of these false claims would stop happening if there were people who could check these and notice that the claimed content sounds nothing like the music that supposedly is being used.</p>
|
||||
<p>Another, albiet more difficult, solution would be to improve or change the way these bots compare the source content to the copyrighted content. Evidently the "sampling" method leaves too much of a margin of error. One of the most obvious issues with it is that there are plenty of loops that you can either buy once or just use for free and if they're used in a piece of copyrighted music, then any content uploaded that contains that same loop will be claimed, as I've experienced firsthand.</p>
|
||||
<p>Now obviously I don't make copyright claim bots, so I don't understand everything about how they work. I'm just hoping that my thoughts (and the thoughts of many others too) won't fall on deaf ears.</p>
|
||||
<p>And with that, we've come to the end of this article. I know that this article was less fun for exciting compared to the Wii DVD Icon adventures, but this is something that I've wanted, needed really, to talk about for a while. -NinjaCheetah</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
275
_site/2021/08/14/moving-on.html
Normal file
275
_site/2021/08/14/moving-on.html
Normal file
@ -0,0 +1,275 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Moving On | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="Moving On">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Moving On | rmc's site">
|
||||
<meta property="og:description" content="Moving On | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>Moving On</h1>
|
||||
<h3>2021-08-14</h3>
|
||||
<h4>NinjaCheetah</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<p>All good things must come to an end. And for me, that thing is my time working with C#. In this article I will outline my reasons for abandoning C# as well as what will happen with my C# programs.</p>
|
||||
<h3>I. Why I'm Leaving It</h3>
|
||||
<p><b>1. Free as in beer</b></p>
|
||||
<p>One of my biggest issues with C# is the lack of open source. While all of my C# code is open, nothing about the language or its tools are. It's a proprietary language that uses proprietary tools and, if you're making a GUI app, only runs on a proprietary OS. So yes it may be free to use, but it offers no freedom.</p>
|
||||
<p>With a language like C, there are options for what compiler you want to use because nothing about the language is proprietary. Or if, for example, let's say you'd like to make a GUI in C. You have several options, such as GTK+, which is an open source solution. When you're programming in C#, you have to use Microsoft's proprietary compiler and one of Microsoft's proprietary GUI frameworks, if you intend to make a GUI app.</p>
|
||||
<p><b>2. Platforms</b></p>
|
||||
<p>Another large issue I have is OS compatibility. C# desktop apps run only on Windows, and even then you have to install the .NET 5/Framework Desktop Runtime first. C# console apps can be run on Linux and macOS in addition to Windows, however you still need the .NET 5/Framework Runtime installed and you need launch the apps with the <code>dotnet run</code> command in the terminal.</p>
|
||||
<p>On the other side, C code can be written to work on multiple platforms, and even if the same code won't you can (usually) make adjustments to let it run different code on different operating systems. (Of course Windows support can be a lot harder due to it not being POSIX compliant, read more about that <a href="/blog/pages/2021-08-16-c-on-windows">here</a>). C code also just runs on whatever OS it's compiled for, no need for any frameworks or runtimes, only the libraries for your program (and unless you're doing something crazy, a lot of common libraries you want to use might already be installed).</p>
|
||||
<p><b>3. Abandoning Windows</b></p>
|
||||
<p>My final reason for leaving C# behind is that I'd like to leave Windows behind, quite possibly for good. Since none of the GUI designer tools, <i>cough</i> Visual Studio <i>cough</i>, run on Linux or macOS (the 2 operating systems I will still have access to), then that leaves me with no way to continue developing my C# apps. And that brings me to the second part of this article:</p>
|
||||
<h3>II. What will happen to my projects</h3>
|
||||
<p><b>CSharpCollection</b></p>
|
||||
<p>I'll keep this short. I have no intentions to continue developing CSharpCollection, or to pass it on to another developer. It is a test app and nothing more.</p>
|
||||
<p><b>NCX-Core, XStore and NCX-News</b></p>
|
||||
<p>While I, and by extension, NCX Programming, will still own the project, it is being passed on to <a href="https://github.com/rolfiee">Rolfie</a>, who will handle any future development or maintaining work. She will also be maintaining XStore. NCX-News will still be managed and updated by NCX Programming.</p>
|
||||
<p><b>XWare</b></p>
|
||||
<p>Like with NCX-Core, XWare will be passed on to <a href="https://github.com/rolfiee">Rolfie</a> as well.</p>
|
||||
<h3>III. Closing words</h3>
|
||||
<p>I'd like to wrap up this article by saying that this is by no means the end of any major NCX Programming projects. There will be more to come in the future, even if I don't know what they'll be now. That's all for now, and I'll be back next time with a fun Microsoft rant.</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
270
_site/2021/08/16/c-on-windows.html
Normal file
270
_site/2021/08/16/c-on-windows.html
Normal file
@ -0,0 +1,270 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>The Problems With C On Windows | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="The Problems With C On Windows">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="The Problems With C On Windows | rmc's site">
|
||||
<meta property="og:description" content="The Problems With C On Windows | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>The Problems With C On Windows</h1>
|
||||
<h3>2021-08-16</h3>
|
||||
<h4>NinjaCheetah</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<p><i>This will be a short article.</i></p>
|
||||
<p>As much as I like using C, I have one big issue with it. And that problem is Windows.</p>
|
||||
<p><b>1. Libraries</b></p>
|
||||
<p>Compared to macOS and Linux, installing/obtaining libraries to use on Windows is difficult. If you're on a Debian or Arch system, you have <code>apt</code> or <code>pacman</code>, respectively. If you're on macOS, you have a few options, such as my package manager of choice, <code>brew</code>. But on Windows? You don't have those options. You have to find and download those libraries yourself in order to use them in your program. Now is this a huge deal? No, not really. It's just inconvenient, compared to macOS and Linux where you'll always be using the latest libraries, and they can be installed with one command.</p>
|
||||
<p><b>2. POSIX Compliance</b></p>
|
||||
<p>Windows is not POSIX Compliant.<sup>[1]</sup> Now what does this mean? <a href="https://en.wikipedia.org/wiki/POSIX">"The Portable Operating System Interface (POSIX) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems."</a><sup>[1]</sup> One particular POSIX standard that it doesn't meet is the C POSIX standard,<sup>[2]</sup> which is what causes me issues. Because Windows does not follow these standards, it doesn't include many of the standard C libraries, and instead forces you to use the proprietary Windows libraries. While this isn't inherently a bad thing, it does kill compatibility between Linux/macOS and Windows. This deters me from making Windows-compatible software because I need to rework a lot of code to do it. With macOS and Linux the changes I need to make are often either minor or nonexistent.</p>
|
||||
<p><b>3. Compiler</b></p>
|
||||
<p>Tying in with the previous section, Windows requires its own proprietary compiler because it needs to be able to include the Windows libraries.</p>
|
||||
<p><b>Finishing Off</b></p>
|
||||
<p>Overall, if you intend to only make Windows programs, there's no reason to not use C. However if, like me, you want to make programs that run on multiple operating systems, you'll have to write completely different versions for POSIX compliant and non-POSIX compliant systems.</p>
|
||||
<hr>
|
||||
<p><b>Sources</b></p>
|
||||
<p>1. <a href="https://en.wikipedia.org/wiki/POSIX">POSIX</a> Wikipedia, retrieved on August 15, 2021.</p>
|
||||
<p>2. <a href="https://en.wikipedia.org/wiki/C_POSIX_library">C POSIX library</a> Wikipedia, retrieved on August 16, 2021.</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
275
_site/2021/08/22/history-of-thevaultc.html
Normal file
275
_site/2021/08/22/history-of-thevaultc.html
Normal file
@ -0,0 +1,275 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>The History of theVaultC | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="The History of theVaultC">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="The History of theVaultC | rmc's site">
|
||||
<meta property="og:description" content="The History of theVaultC | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>The History of theVaultC</h1>
|
||||
<h3>2021-08-22</h3>
|
||||
<h4>NinjaCheetah</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<p>I've decided that it's probably a good idea for me to take a break from the rant-type articles and write something a little more fun. So here it is! The history of our project theVaultC, up through the day this article comes out.</p>
|
||||
<h3>I. theVault (The C# One)</h3>
|
||||
<p>Before theVaultC, my equivalent project was theVault, which was written in C#. The only projects it had were GuessMyNumber, GraphicStuff, and helloWorld. GuessMyNumber and GraphicStuff in theVault are almost identical to the theVaultC versions. HelloWorld was not remade because I didn't think there was any reason to remake that, as it was written when I was actually new to C# console apps, and was actually a test. By the time I started on theVaultC, I was already past that point with C.</p>
|
||||
<p>I finally decided to abandon theVault when I decided to slow down (so that I could eventually stop) my work on C# programs. I archived it on March 19, which was the same day I had set up a workflow on the theVaultC repo, getting it to the point where it was practical to have it as a full replacement. The programs in it at that point were equal to the ones in theVault.</p>
|
||||
<h3>II. theVaultC</h3>
|
||||
<p>I decided to create theVaultC when I was learning C and wanted to create something to both test and show off my skill with C. I wanted to be able to replace theVault with it so I worked on creating versions of those programs in C. That is more or less all the history behind the program itself. In the next section I'm going to talk about the histories of each program in theVaultC.</p>
|
||||
<h3>III. theVaultC's Programs</h3>
|
||||
<p><b>GuessMyNumberC and GraphicStuffC</b></p>
|
||||
<p>I'm grouping these two together because they have the same history. As I've already mentioned, these were recreations of the theVault programs.</p>
|
||||
<p><b>PrintUnixTime</b></p>
|
||||
<p>PrintUnixTime was originally a quick test that I made when I was learning how to seed random numbers using <code>time(0)</code>. After learning how it worked, I constructed it to print the number of seconds since Unix time "began" (also known as the Unix Epoch<sup>[1]</sup>) on 1 January 1970. I made this example program that just read the value from <code>time(0)</code> and printed it as a cool way to check how many seconds it's currently at, and then decided to add to theVaultC.</p>
|
||||
<p><b>RNGTool</b></p>
|
||||
<p>RNGTool (also known as the theVaultC program that has a name that is way too cool for what it is) is a program that generates random numbers. It also lets you enter a maximum and minimum number that you'd like be generated. I only created it because I had been working on random number generation when optimizing GuessMyNumberC, and wanted to use it in another program just for fun.</p>
|
||||
<p><b>WordGenerator</b></p>
|
||||
<p>WordGenerator is a (from the outside) simple-seeming program, that was actually the hardest to make by far out of all the theVaultC programs. I needed quite a bit of help from <a href="https://github.com/Garhoogin">Garhoogin</a> and <a href="https://github.com/Jonatan6">Jonatan6</a>, but in the end I got it done. It reads a list of words (conveniently located in a file named <code>words.txt</code>) and then picks a random selection of words from that list (the number of words it picks is random too!) and prints them. I don't quite remember when I first thought about this program, but it had been floating around for a while by the time that I finally got around to it.</p>
|
||||
<p>I hope you found this little dive into the history of theVaultC interesting! Any questions? Feel free to <a href="mailto:github@ncxprogramming.com">shoot us an email!</a>
|
||||
<hr>
|
||||
<p><b>Sources</b></p>
|
||||
<p>1. <a href="https://en.wikipedia.org/wiki/Unix_time">Unix time</a> Wikipedia, retrieved on August 22, 2021</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
264
_site/2021/09/21/unsupported-mac-adventures.html
Normal file
264
_site/2021/09/21/unsupported-mac-adventures.html
Normal file
@ -0,0 +1,264 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Unsupported Mac Adventures | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="Unsupported Mac Adventures">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Unsupported Mac Adventures | rmc's site">
|
||||
<meta property="og:description" content="Unsupported Mac Adventures | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>Unsupported Mac Adventures</h1>
|
||||
<h3>2021-09-21</h3>
|
||||
<h4>NinjaCheetah</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<p>So as a fun way to document my work on my MacBooks, I thought I'd make a blog article out of them. Blog articles that are actually about our software will be coming soon.</p>
|
||||
<h3>Part 1: My First Macbook</h3>
|
||||
<p>The first old Mac I had to work on was my parents old 2010 White Unibody MacBook (Model identifier <code>MacBook7,2</code>) with 4GB of RAM, a 500GB HDD and a 2.4GHz Core 2 Duo CPU. The title of this part has a double meaning of sorts. It was indeed the first MacBook I experimented with, but it was also the first MacBook I ever used (and also the first computer I really used) and is what really got me interested in computers, so it's pretty cool that I've now come back to it.</p>
|
||||
<p>When I first pulled it out, all I knew about was <a href="http://dosdude1.com/mojave/">dosdude1's Mojave patcher</a>, so my intention was just to install Mojave and then tinker with that. The installation was relatively uneventful, other than the minor stress I had from doing a BootROM update (since an interruption could brick your Mac!). I only had to do that update because this Mac was still running the macOS (or more accurately, Mac OS X) version that it came with, 10.6 Snow Leopard, and so it never got the APFS support update that I needed for Mojave updates to work, otherwise I would have avoided it.</p>
|
||||
<p>After a while, I wanted some programs (mostly just Xcode) that needed Catalina, so I decided to check the compatibility list for <a href="http://dosdude1.com/catalina/"> dosdude1's Catalina patcher</a>... Lo and behold, my Mac was on the list! So I immediately went and downloaded the patcher and began preparing my USB, making sure to get a backup first (I learned my lesson after one of my laptops' HDD failed). Attempting to upgrade failed, but luckily one fresh install and a restore later and I had Catalina up and running with all my files, and that was enough for me.. For about a month.</p>
|
||||
<p>Mostly by chance, I went to check on the MacRumours <a href="https://forums.macrumors.com/threads/macos-11-big-sur-on-unsupported-macs-thread.2242172/">macOS 11 Big Sur on Unsupported Macs</a> thread, and discovered that someone going by ASentientBot had added Graphical Acceleration back to older, non-metal GPUs, and mine was one of the ones it supported! So, like before, I made a backup and got to work getting my USB all set up. This time I was using <a href="https://github.com/dortania/OpenCore-Legacy-Patcher">OpenCore Legacy Patcher</a> instead of an OS patcher like dosdude1's, which allowed system updates without having to re-patch the system (possibly excluding the GPU Acceleration patches, I never got a chance to test that). This process was a lot more of a headache than for Mojave and Catalina. My biggest issue was that once I had Big Sur installed, it would lock up on boot when the progress bar was about 1/3 of the way across. I eventually figured out that the NVRAM needed to be reset, and since then that Mac has been running Big Sur about as smoothly (or likely more so) than you'd expect for an 11 year old Mac. It's honestly quite impressive that such an old Mac can still run the latest macOS version without too much trouble.</p>
|
||||
<p>So for now, that's all. At some point in the future (might be the next article, might not be) I'll continue this and will talk about my new(ish) MacBook Pro and the adventures I've had getting Big Sur running on that one.</p>
|
||||
<p>Also, here's a fun fact: almost every article on this blog was written on that 2010 White MacBook!</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
266
_site/2021/10/01/unsupported-mac-adventures-2.html
Normal file
266
_site/2021/10/01/unsupported-mac-adventures-2.html
Normal file
@ -0,0 +1,266 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Unsupported Mac Adventures Part 2 | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="Unsupported Mac Adventures Part 2">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Unsupported Mac Adventures Part 2 | rmc's site">
|
||||
<meta property="og:description" content="Unsupported Mac Adventures Part 2 | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>Unsupported Mac Adventures Part 2</h1>
|
||||
<h3>2021-10-01</h3>
|
||||
<h4>NinjaCheetah</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<h3>Part 2: My First Personal MacBook</h3>
|
||||
<p>The second old (but newer than the other!) Mac that I had was a 2012 Unibody MacBook Pro (Model identifier <code>MacBookPro9,2</code>) with 4GB RAM, a 500GB HDD, and a 2.5 GHz Dual-Core Intel Core i5 CPU. This MacBook Pro was the first MacBook that was actually mine as the 2010 White MacBook is still my parents'.</p>
|
||||
<p>When I got this one, I already knew that I'd need <a href="https://github.com/dortania/OpenCore-Legacy-Patcher">OpenCore Legacy Patcher</a> to patch it. The nice thing about this Mac is that it supports Apple's Metal API, meaning that it could do graphical acceleration in Big Sur wthout any patches (so I can use System Integrity Protection and Secure Boot Model!). Before patching though, I took the SSD out of my ThinkPad, which is a Samsung EVO 960, and put it in the Mac. I tried using it with the 5400RPM HDD that it came with in Catalina and it was too slow for me, especially coming from an SSD in my old Mac.</p>
|
||||
<p>The initial patching went fine and I had Big Sur up and running without any issues. However, after updating from Big Sur 11.5.2 to Big Sur 11.6, I started to notice crashing. Apps and system processes would experience a memory leak of some kind, and then would crash itself and other programs until I either rebooted or a kernel panic occurred (I later discovered that the 11.6 update had no relevance). I tried debugging it by changing some OCLP settings and repatching, but it wouldn't help. My next idea was that maybe my backup, which came from my original patched Mojave install and had been updated through every version since, was causing problems because of all the potentially left over patches. Unfortunately a clean install of 11.6 didn't fix it.</p>
|
||||
<p>After that I decided to wipe and do a fresh install of 11.5.2, because at this point I thought that the software update had caused my issues. Judging from the fact that the crashing still happened, it was safe to say that 11.6 wasn't the issue.</p>
|
||||
<p>I then turned my attention to potential hardware problems. The first and easiest thing to try was putting the HDD back in and installing Big Sur to that, just in the off chance that something was wrong with my SSD (not that I though there was, since it was relatively new). No luck there. I then ran <a href="https://www.memtest86.com">memtest86</a>, a free bootable environment for testing RAM, and all 4 passes passed the tests. So for the time being, I just gave up and accepted that I'd have to deal with the crashing.</p>
|
||||
<p>Luckily, someone in the OCLP discord server knew of the issue and said you could use the command <code>sudo purge</code> to purge the leaking memory, effectively fixing the issue for the time being (it would still come back eventually). Since I couldn't open apps while it was crashing, I enabled SSH and created a shortcut in the Shortcuts app on my iPhone to run <code>sudo purge</code> over SSH right from my home screen whenever I needed it, which worked pretty well. I later created an Automation quick action workflow on the Mac itself so that I could run my workflow just by pressing a key combination. This would let me stop a crash that had already quit all my apps but hadn't killed Finder yet (as I needed at least one app to be open to run the workflow).</p>
|
||||
<p>So, what now? At this point this is what I was wondering because I just couldn't figure out what was wrong. That is until someone suggested to me that my RAM might be bad, as they had RAM that was bad but could pass memtest86. So, like with the SSD, I stole the 8GB of RAM from my ThinkPad and put it in my Mac.</p>
|
||||
<p>And that brings us to now, where I'm writing this article on my seemingly no longer crashing Mac. Will this be the end? I hope so. If it's not, expect a part 3 ;)</p>
|
||||
<p>Another fun fact: most of RNGTool's code was written on this 2012 MacBook Pro! (the entire Jekyll conversion for this site was done on here too!)</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
274
_site/2021/12/07/giving-ncx-core-cpr.html
Normal file
274
_site/2021/12/07/giving-ncx-core-cpr.html
Normal file
@ -0,0 +1,274 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Giving NCX-Core Some CPR | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="Giving NCX-Core Some CPR">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Giving NCX-Core Some CPR | rmc's site">
|
||||
<meta property="og:description" content="Giving NCX-Core Some CPR | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>Giving NCX-Core Some CPR</h1>
|
||||
<h3>2021-12-07</h3>
|
||||
<h4>NinjaCheetah</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<p><i>Welcome back to another edition of I Don't Stick With Anything.</i></p>
|
||||
<p>I went back on my decision to completely stop using Windows because some stuff still absolutely requires it. <i>Chilling, isn't it?</i></p>
|
||||
<h3>Atrocity #1: The Code</h3>
|
||||
<p>Since I was already here using Windows 10 again (however it's the LTSC 2021 version so less telemetry and no Windows Store at least) I figured that I'd pop in and look at how NCX-Core's code was holding up (with the "new" and exciting VS2022!); this was my first mistake. Now to be fair I acknowledged that the code was bad when I first wrote it, but I hadn't quite realized just how severe it truly was. Most likely the worst (publically available) code I've ever written and ever will write. But hey, it was one of my first major projects so I can't be too hard on it.</p>
|
||||
<p>Honestly I didn't do a lot to fix the code, but I did finally correct all of the incorrect file paths that would cause the program to inexplicably crash whenever it tried to access them since I continue to put off error handling. I also fixed a decent bit of inefficient code and removed a bunch of feature stubs that were just taking up space. Oh and button code stubs. There was a large amount of those for some reason.</p>
|
||||
<h3>Atrocity #2: The GUI</h3>
|
||||
<p>The GUI was the next thing I took another look at. Now, <i>overall</i> the GUI isn't awful. Yes, the fact that the Library has hardcoded icon positions is dumb and since even <i>I</i> don't have CSharpCollection installed, there's always an awkward gap in the first slot. The About screen is also not nice to look at. Oh and the Settings screen is far too empty. Like really.</p>
|
||||
<p>The real issue with the GUI is all of the photo-based elements. This includes all of the buttons, menu bar items and program icons. If you weren't already aware, all of the buttons are PNGs. Really big PNGs. Like, really big.</p>
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2021-12-07/what-is-this-res.png" style="margin-left:8px;" alt="Image showing the resolution of the image is 1700x1100.">
|
||||
<p>Yeah... And for some reason, I expected this to scale down to 104x66 for some reason (let's just ignore this bizarre resolution). I believe I though that the bigger the image the better it would scale down? I'm not even really sure at this point. So I decided step one for fixing this mess would be to create some brand new assets, this time as vector graphics so they'd scale down nicely. (Read 'A Love Letter to Vector Graphics' which may or may not ever come out for that backstory.) Since these are vector graphics, it means geometric shapes, which means that not only do they scale better but they also just look nicer to begin with. If you'd like to see a fun comparison, <a href="https://cdn.ncxprogramming.com/file/internal/NCX-Core%20Asset%20Pack.zip">click here</a> to download <code>NCX-Core Asset Pack.zip</code> from our not-CDN that has the old assets and the new ones.</p>
|
||||
<p>With all of the new assets in, I can say that NCX-Core is now at least slightly less painful to use (not that anyone does anyway). Yay.</p>
|
||||
<h3>The State of NCX-Core and its Future</h3>
|
||||
<p><b>Can it be used?</b></p>
|
||||
<p>Yes, but it's not very useful to anyone. I've made enough changes that it's now relatively usable. The issue is just that there's no real need for it.</p>
|
||||
<p><b>If that's the case then what's going to happen to it?</b></p>
|
||||
<p>I honestly don't know. My current plan is to finish polishing what's there and release it as v3.2, and then leave it. It's an important piece of "programmer history" so it's not going to get deleted or be privated. For now it's also not going to be archived. So if I ever decide to pick it up and use it's code for something new it's there.</p>
|
||||
<h3>Wow this was kind of sad</h3>
|
||||
<p>Yeah I know. But, officially saying this is done-ish means I'm finally going to stop holding out on NCX-Core-Lite and work on a proper big program, so stay tuned!</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
260
_site/2021/12/07/love-letter-to-svgs.html
Normal file
260
_site/2021/12/07/love-letter-to-svgs.html
Normal file
@ -0,0 +1,260 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Love Letter to Vector Graphics | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="Love Letter to Vector Graphics">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Love Letter to Vector Graphics | rmc's site">
|
||||
<meta property="og:description" content="Love Letter to Vector Graphics | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>Love Letter to Vector Graphics</h1>
|
||||
<h3>2021-12-07</h3>
|
||||
<h4>NinjaCheetah</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<p>I finally reached that point in my life where I learned what an SVG is! Not sure how I made it this far without that knowledge.</p>
|
||||
<p>If you don't know what vector graphics are, I suggest reading <a href="https://en.wikipedia.org/wiki/Scalable_Vector_Graphics">Wikipedia - Scalable Vector Graphics</a> first. To sum it up briefly, SVGs are made of geometric shapes instead of pixels so they can be easily scaled up without losing quality.</p>
|
||||
<p>Currently I'm only making brand new images as SVGs, but I intend to remake some other old images, especially the banners on this site. If you have a really big monitor (or at least one that's really high res), you can really see this difference by visiting either <a href="/">the homepage</a> or <a href="/programs">the programs page</a> and then <a href="/products/icons">our icon sales page</a> <i>(hmm what could this be)</i> and scroll down to the banner. Now, uh, I don't have a high-res screen (in fact my MacBook Pro is the last pre-Retina display) so I have no idea if this will work. But it probably should. Feel free to yell at me in an issue or something if this doesn't work.</p>
|
||||
<p>That's all for now. Look forward to some scalable goodness in the near future.</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
281
_site/2022/01/07/bringing-rngtool-to-phones.html
Normal file
281
_site/2022/01/07/bringing-rngtool-to-phones.html
Normal file
@ -0,0 +1,281 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Bringing RNGTool to Your Pocket (Kinda) | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="Bringing RNGTool to Your Pocket (Kinda)">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Bringing RNGTool to Your Pocket (Kinda) | rmc's site">
|
||||
<meta property="og:description" content="Bringing RNGTool to Your Pocket (Kinda) | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>Bringing RNGTool to Your Pocket (Kinda)</h1>
|
||||
<h3>2022-01-07</h3>
|
||||
<h4>NinjaCheetah</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<p>hey look, the first article of the year! happy new year!</p>
|
||||
<p>So, what have I been up to recently (in terms of programming)? Mostly improving RNGTool. Since I've gotten more comfortable with Swift, it's started to push me away from C a little bit. Now I'm sure I'll return to it eventually, but for now this means I'm working on RNGTool and my websites exclusively. But hey, that means that RNGTool is becoming more usable!</p>
|
||||
<p><b>Some quick clarification:</b> since this is Swift, the only pockets RNGTool is coming to are the ones with iPhones (or iPods (or even iPads if you have <i>really</i> big pockets)) in them. Sorry Android users.</p>
|
||||
<p>So I finally made the realization that one can actually deploy iOS apps to their iDevices for testing. For some reason I genuinely thought you had to be an Apple Developer to even run your own app on your phone. Whoops. I also realized like 2 months later that I can actually run iDevice simulators on my Mac without much trouble so this wasn't even really an issue in the end.</p>
|
||||
<p>Armed with this new information, I decided it was about time that I tried to port RNGTool to iOS. It's something that I've always wanted to do since I first created it but because of the afformentioned testing issues I didn't have a good way to make sure it actually did what it was supposed to. The basic porting process wasn't actually too hard. The beauty of Swift is that <i>most</i> code will work on all Apple platforms (especially since macOS 11.0, which added some previously iOS-specific features to Mac). At first the iOS version was actually just the macOS Swift files for the modes and settings with a new view listing. And then it got hard.</p>
|
||||
<p>While my basic direct code porting was fine to get a working prototype, most of the UI was not really that usable. You can see this early UI below.</p>
|
||||
<div style="display:inline-block;padding-left:8px;">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-01-07/rngtool-mobile-mode-list-beta.jpg" width="15%">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-01-07/rngtool-mobile-marble-mode-beta.jpg" width="15%">
|
||||
</div>
|
||||
<p>And thus began the quest to make RNGTool usable. I started with the settings, as they were a trainwreck that I unfortunately don't have any pictures of (and it was never committed to GitHub so it's long gone). These actually came out pretty well in the end. I managed to keep using the exact same code in both the macOS and iOS versions, just with different wrappings around the actual settings in the two <code>SettingsView.swift</code> files. The result is something arguably nicer to use than the macOS version, though I'll let you judge that for yourself.</p>
|
||||
<div style="display:inline-block;padding-left:8px;">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-01-07/rngtool-mobile-settings1.png" width="15%">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-01-07/rngtool-mobile-settings2.png" width="15%">
|
||||
</div>
|
||||
<p>Next on the to-do list was to make brand new mobile-focused UIs for the actual generator modes. I tried to do what I did with the settings but it just wasn't working out; the UI needed to be basically redesigned from the ground up to work well on screens as small as 4 inches diagonally (looking at you, iPod Touch 7th gen). The easiest place to start was the text, so I shrank it all down until it was small enough to fit comfortably without being so small that it was hard to read. Then it was time to address the controls.</p>
|
||||
<p>The annoying thing with the controls is that on macOS you really <i>have</i> to add extra properties to make them look decent. On iOS, however, that isn't an issue an raw controls look fine, excluding the buttons. The buttons needed some extra tinkering but what I came up with ended up looking pretty good, which is really only because all of my buttons use SF Symbols rather than text, so adding a rounded border was enough to make them big enough to press.</p>
|
||||
<p>So by this point we've got working settings and working control (and of course functional number generation). What could possibly be left? Images.</p>
|
||||
<p>While I briefly considered dropping the the dice and card images, I just felt like it would be weird since that was a feature I put a lot of time into on macOS. Thankfully, for literally the first time ever (that I can remember), math was useful in my code. Incredible, isn't it? I figured out how to read the usable screen size, and then used some fancy math to scale the dice and cards (as well as set the card offsets) to fit your screen nicely. The results can be seen below.</p>
|
||||
<div style="display:inline-block;padding-left:8px;">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-01-07/rngtool-mobile-dice-mode.png" width="15%">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-01-07/rngtool-mobile-card-mode.png" width="15%">
|
||||
</div>
|
||||
<p>So with that, RNGTool on iOS reached what it is today (more or less, new features have been added that I'm not mentioning here because they weren't part of the inital port). Now, about the "Kinda" in the title. Unfortunately, as I'm not an Apple Developer, I can't publish the app on the App Store or really distribute it at all. So if you want to run it, you'll either need a Jailbroken device on iOS 15 (which is not currently possible) or a sideloading method like <a href="https://sideloadly.io">Sideloadly!</a> or <a href="https://altstore.io">AltStore</a>. I won't be covering that here, but neither of those programs are particularly hard to use, so it shouldn't be hard to get RNGTool installed. Downloads can be found in the <a href="https://github.com/NCX-Programming/RNGTool/releases/latest">latest release</a> or as a build artifact in the latest <a href="https://github.com/NCX-Programming/RNGTool/actions">GitHub Actions run</a>.</p>
|
||||
<p>That's all for now! Hopefully it won't be a full month between articles next time.</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
273
_site/2022/02/01/bringing-rngtool-to-apple-watch.html
Normal file
273
_site/2022/02/01/bringing-rngtool-to-apple-watch.html
Normal file
@ -0,0 +1,273 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Bringing RNGTool to Your Wrist (Maybe) | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/styledsi.css">
|
||||
<link id="pagestyle" rel="stylesheet" type="text/css" href="">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ianskinner1982.github.io/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
<script src="/assets/js/main.js"></script>
|
||||
|
||||
<meta property="og:title" content="Bringing RNGTool to Your Wrist (Maybe)">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Bringing RNGTool to Your Wrist (Maybe) | rmc's site">
|
||||
<meta property="og:description" content="Bringing RNGTool to Your Wrist (Maybe) | rmc's site">
|
||||
<link rel="canonical" href="https://ianskinner1982.github.io">
|
||||
<meta property="og:url" content="https://ianskinner1982.github.io">
|
||||
<meta property="og:site_name" content="rmc's site">
|
||||
|
||||
<meta property="og:image" content="https://ianskinner1982.github.io/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
body {
|
||||
background-image: url('/assets/dsi/background.jpg');
|
||||
}
|
||||
.nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 3.5%;
|
||||
/* overflow: hidden; */
|
||||
}
|
||||
.navstd {
|
||||
float: left;
|
||||
}
|
||||
.navalt {
|
||||
float: right;
|
||||
}
|
||||
.container {
|
||||
position: relative;
|
||||
}
|
||||
.imageOne {
|
||||
z-index: 0;
|
||||
}
|
||||
.imageTwo {
|
||||
z-index: 1;
|
||||
}
|
||||
.imageThree {
|
||||
z-index: 2;
|
||||
}
|
||||
.image {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.navimgoverlay {
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.navimg {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: .6vw;
|
||||
width: 6vw;
|
||||
height: auto;
|
||||
}
|
||||
.navicon {
|
||||
text-align: center;
|
||||
float: left;
|
||||
padding-top: 2.1vw;
|
||||
padding-left: 1.38vw;
|
||||
width: 3.2vw;
|
||||
height: auto;
|
||||
}
|
||||
.navedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 1.5vw;
|
||||
height: auto;
|
||||
}
|
||||
.navpadding li {
|
||||
padding-top: 1.5%;
|
||||
}
|
||||
.image2 {
|
||||
position: absolute;
|
||||
border-color: #FFFFFF
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay {
|
||||
margin: 0% 2% 0%;
|
||||
opacity: 0.0;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleimgoverlay:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.titleimg {
|
||||
margin: 0% 2% 0%;
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 16vw;
|
||||
height: auto;
|
||||
}
|
||||
.titleedge {
|
||||
text-align: center;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
width: 18vw;
|
||||
height: auto;
|
||||
}
|
||||
.titlepadding li {
|
||||
padding-top: 1.5%;
|
||||
margin: 0% 2% 0%
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
<div class="nav">
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="navedge"><img src="/assets/dsi/leftbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
<div class="navpadding">
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/home.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/twldevapps.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/aaaaaaa/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/dsishop.gif" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="/gaming/htmls/DEBUG/startup.html"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/box.png" class="navimg"></div>
|
||||
<div class="imageThree image"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/discord.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://discord.gg/XZxxZngwDQ"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="navimg">
|
||||
<div class="container">
|
||||
<div class="imageOne image"><img src="/assets/dsi/boxfull.png" class="navimg"></div>
|
||||
<div class="imageTwo image"><img src="/assets/dsi/github.png" class="navicon"></div>
|
||||
<div class="imageThree image"><a href="https://github.com/IanSkinner1982/ianskinner1982.github.io/"><img src="/assets/dsi/boxoverlay.png" class="navimgoverlay"></a></div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
<li class="navedge"><img src="/assets/dsi/rightbracket.png" style="width:1.5vw;height:auto;margin:auto;"/></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<div id="content-wrap">
|
||||
<div class="text-center pt-3">
|
||||
<h1>Bringing RNGTool to Your Wrist (Maybe)</h1>
|
||||
<h3>2022-02-01</h3>
|
||||
<h4>NinjaCheetah</h4>
|
||||
<p><a href=/blog><- Back</a></p>
|
||||
</div>
|
||||
<div class="container">
|
||||
<hr>
|
||||
<p>Hmm this title sounds familiar...</p>
|
||||
<p>More RNGTool updates! This time I'm porting RNGTool to watchOS rather than iOS. And it's interesting. The most difficult part of this is dealing with the limited screen real estate that the Apple Watch has. The solution? Cutting out the fat.</p>
|
||||
<p>RNGTool is by no means a visually simple app. I've definitely overcomplicated its UI. This gives me a good chance to really cut out any parts of the app's UI that aren't needed so that you can fit the parts that matter. The actual process of porting the app's code was a lot easier than from macOS to iOS because most of the parts that aren't support on watchOS were being removed anyway, so I won't go over it here.</p>
|
||||
<p>Here's the interesting part, a comparison of the iOS and watchOS apps:</p>
|
||||
<div style="display:inline-block;padding-left:8px;">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-02-01/rngtool-mobile-number-mode.png" width="20%">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-02-01/rngtool-wrist-number-mode.png" width="15%">
|
||||
</div>
|
||||
<div style="display:inline-block;padding-left:8px;">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-02-01/rngtool-mobile-dice-mode.png" width="20%">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-02-01/rngtool-wrist-dice-mode.png" width="15%">
|
||||
</div>
|
||||
<div style="display:inline-block;padding-left:8px;">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-02-01/rngtool-mobile-about.png" width="20%">
|
||||
<img src="https://cdn.ncxprogramming.com/file/blog/2022-02-01/rngtool-wrist-about.png" width="15%">
|
||||
</div>
|
||||
<p>Unfortunately those are all of the screens I've completely finished at this point. I will likely make a post updating on when I finish the rest.</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<footer class="bg-light text-lg-start border-top align-items-center text-center" style="text-align:center;">
|
||||
<div class="text-center p-3 align-items-center" style="font-size: 8px;">
|
||||
Copyright © 2021-<span id="footerDate"></span> Ian M. Skinner <a href="/contactus" class="text-reset fw-bold">Contact me.</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</footer>
|
||||
</html>
|
||||
56
_site/404.html
Normal file
56
_site/404.html
Normal file
@ -0,0 +1,56 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Error 404 | rmc's site</title>
|
||||
<link rel="icon" type="image/png" href="/icon.png"/>
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/style.css">
|
||||
<link rel="alternate" type="application/atom+xml" href="https://ncxprogramming.com/feed.xml">
|
||||
<script src="/assets/bootstrap/js/bootstrap.bundle.js"></script>
|
||||
|
||||
<meta property="og:title" content="Error 404">
|
||||
|
||||
<meta property="og:locale" content="en_US">
|
||||
<meta name="description" content="Error 404 | rmc's site">
|
||||
<meta property="og:description" content="Error 404 | rmc's site">
|
||||
<link rel="canonical" href="https://ncxprogramming.com">
|
||||
<meta property="og:url" content="https://ncxprogramming.com">
|
||||
<meta property="og:site_name" content="NCX Programming">
|
||||
|
||||
<meta property="og:image" content="https://ncxprogramming.com/icon.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<div id="content-wrap" style="padding-bottom: 2.5rem;">
|
||||
|
||||
<nav class="navbar navbar-dark navbar-expand-lg bg-black">
|
||||
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="/">NCX Programming</a>
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarText">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/">Home</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/programs/">Programs</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/blog">DS Stuff</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="text-center" style="color: #fff;">
|
||||
<h1>404</h1>
|
||||
<h1>Not Found</h1>
|
||||
<p><a href="javascript:window.history.back()">Previous page</a></p>
|
||||
<p><a href="/">Home</a></p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</html>
|
||||
339
_site/LICENSE
Normal file
339
_site/LICENSE
Normal file
@ -0,0 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
5
_site/README.md
Executable file
5
_site/README.md
Executable file
@ -0,0 +1,5 @@
|
||||
# IanSkinner1982.github.io
|
||||
|
||||
Imagine a making a website that is actually good. Couldn't be me.
|
||||
|
||||
Some parts of this site (the navbar) have taken from the [NCX Programming Website](https://github.com/NCX-Programming/site).
|
||||
5051
_site/assets/bootstrap/css/bootstrap-grid.css
vendored
Normal file
5051
_site/assets/bootstrap/css/bootstrap-grid.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
_site/assets/bootstrap/css/bootstrap-grid.css.map
Normal file
1
_site/assets/bootstrap/css/bootstrap-grid.css.map
Normal file
File diff suppressed because one or more lines are too long
7
_site/assets/bootstrap/css/bootstrap-grid.min.css
vendored
Normal file
7
_site/assets/bootstrap/css/bootstrap-grid.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
_site/assets/bootstrap/css/bootstrap-grid.min.css.map
Normal file
1
_site/assets/bootstrap/css/bootstrap-grid.min.css.map
Normal file
File diff suppressed because one or more lines are too long
5050
_site/assets/bootstrap/css/bootstrap-grid.rtl.css
vendored
Normal file
5050
_site/assets/bootstrap/css/bootstrap-grid.rtl.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
_site/assets/bootstrap/css/bootstrap-grid.rtl.css.map
Normal file
1
_site/assets/bootstrap/css/bootstrap-grid.rtl.css.map
Normal file
File diff suppressed because one or more lines are too long
7
_site/assets/bootstrap/css/bootstrap-grid.rtl.min.css
vendored
Normal file
7
_site/assets/bootstrap/css/bootstrap-grid.rtl.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
485
_site/assets/bootstrap/css/bootstrap-reboot.css
vendored
Normal file
485
_site/assets/bootstrap/css/bootstrap-reboot.css
vendored
Normal file
@ -0,0 +1,485 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v5.1.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors
|
||||
* Copyright 2011-2021 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
|
||||
*/
|
||||
:root {
|
||||
--bs-blue: #0d6efd;
|
||||
--bs-indigo: #6610f2;
|
||||
--bs-purple: #6f42c1;
|
||||
--bs-pink: #d63384;
|
||||
--bs-red: #dc3545;
|
||||
--bs-orange: #fd7e14;
|
||||
--bs-yellow: #ffc107;
|
||||
--bs-green: #198754;
|
||||
--bs-teal: #20c997;
|
||||
--bs-cyan: #0dcaf0;
|
||||
--bs-white: #fff;
|
||||
--bs-gray: #6c757d;
|
||||
--bs-gray-dark: #343a40;
|
||||
--bs-gray-100: #f8f9fa;
|
||||
--bs-gray-200: #e9ecef;
|
||||
--bs-gray-300: #dee2e6;
|
||||
--bs-gray-400: #ced4da;
|
||||
--bs-gray-500: #adb5bd;
|
||||
--bs-gray-600: #6c757d;
|
||||
--bs-gray-700: #495057;
|
||||
--bs-gray-800: #343a40;
|
||||
--bs-gray-900: #212529;
|
||||
--bs-primary: #0d6efd;
|
||||
--bs-secondary: #6c757d;
|
||||
--bs-success: #198754;
|
||||
--bs-info: #0dcaf0;
|
||||
--bs-warning: #ffc107;
|
||||
--bs-danger: #dc3545;
|
||||
--bs-light: #f8f9fa;
|
||||
--bs-dark: #212529;
|
||||
--bs-primary-rgb: 13, 110, 253;
|
||||
--bs-secondary-rgb: 108, 117, 125;
|
||||
--bs-success-rgb: 25, 135, 84;
|
||||
--bs-info-rgb: 13, 202, 240;
|
||||
--bs-warning-rgb: 255, 193, 7;
|
||||
--bs-danger-rgb: 220, 53, 69;
|
||||
--bs-light-rgb: 248, 249, 250;
|
||||
--bs-dark-rgb: 33, 37, 41;
|
||||
--bs-white-rgb: 255, 255, 255;
|
||||
--bs-black-rgb: 0, 0, 0;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
||||
--bs-body-font-family: var(--bs-font-sans-serif);
|
||||
--bs-body-font-size: 1rem;
|
||||
--bs-body-font-weight: 400;
|
||||
--bs-body-line-height: 1.5;
|
||||
--bs-body-color: #212529;
|
||||
--bs-body-bg: #fff;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
:root {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: var(--bs-body-font-family);
|
||||
font-size: var(--bs-body-font-size);
|
||||
font-weight: var(--bs-body-font-weight);
|
||||
line-height: var(--bs-body-line-height);
|
||||
color: var(--bs-body-color);
|
||||
text-align: var(--bs-body-text-align);
|
||||
background-color: var(--bs-body-bg);
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 1rem 0;
|
||||
color: inherit;
|
||||
background-color: currentColor;
|
||||
border: 0;
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
hr:not([size]) {
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
h6, h5, h4, h3, h2, h1 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: calc(1.375rem + 1.5vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h1 {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: calc(1.325rem + 0.9vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h2 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: calc(1.3rem + 0.6vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h3 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h4 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
abbr[title],
|
||||
abbr[data-bs-original-title] {
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
cursor: help;
|
||||
-webkit-text-decoration-skip-ink: none;
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul {
|
||||
padding-left: 2rem;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: 0.5rem;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 0.875em;
|
||||
}
|
||||
|
||||
mark {
|
||||
padding: 0.2em;
|
||||
background-color: #fcf8e3;
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 0.75em;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #0d6efd;
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:hover {
|
||||
color: #0a58ca;
|
||||
}
|
||||
|
||||
a:not([href]):not([class]), a:not([href]):not([class]):hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: var(--bs-font-monospace);
|
||||
font-size: 1em;
|
||||
direction: ltr /* rtl:ignore */;
|
||||
unicode-bidi: bidi-override;
|
||||
}
|
||||
|
||||
pre {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
font-size: 0.875em;
|
||||
}
|
||||
pre code {
|
||||
font-size: inherit;
|
||||
color: inherit;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 0.875em;
|
||||
color: #d63384;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a > code {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
kbd {
|
||||
padding: 0.2rem 0.4rem;
|
||||
font-size: 0.875em;
|
||||
color: #fff;
|
||||
background-color: #212529;
|
||||
border-radius: 0.2rem;
|
||||
}
|
||||
kbd kbd {
|
||||
padding: 0;
|
||||
font-size: 1em;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
img,
|
||||
svg {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table {
|
||||
caption-side: bottom;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
color: #6c757d;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
text-align: -webkit-match-parent;
|
||||
}
|
||||
|
||||
thead,
|
||||
tbody,
|
||||
tfoot,
|
||||
tr,
|
||||
td,
|
||||
th {
|
||||
border-color: inherit;
|
||||
border-style: solid;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus:not(:focus-visible) {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
[role=button] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
select {
|
||||
word-wrap: normal;
|
||||
}
|
||||
select:disabled {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
[list]::-webkit-calendar-picker-indicator {
|
||||
display: none;
|
||||
}
|
||||
|
||||
button,
|
||||
[type=button],
|
||||
[type=reset],
|
||||
[type=submit] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
button:not(:disabled),
|
||||
[type=button]:not(:disabled),
|
||||
[type=reset]:not(:disabled),
|
||||
[type=submit]:not(:disabled) {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
float: left;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
line-height: inherit;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
legend {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
legend + * {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
::-webkit-datetime-edit-fields-wrapper,
|
||||
::-webkit-datetime-edit-text,
|
||||
::-webkit-datetime-edit-minute,
|
||||
::-webkit-datetime-edit-hour-field,
|
||||
::-webkit-datetime-edit-day-field,
|
||||
::-webkit-datetime-edit-month-field,
|
||||
::-webkit-datetime-edit-year-field {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-inner-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type=search] {
|
||||
outline-offset: -2px;
|
||||
-webkit-appearance: textfield;
|
||||
}
|
||||
|
||||
/* rtl:raw:
|
||||
[type="tel"],
|
||||
[type="url"],
|
||||
[type="email"],
|
||||
[type="number"] {
|
||||
direction: ltr;
|
||||
}
|
||||
*/
|
||||
::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-color-swatch-wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
::file-selector-button {
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=bootstrap-reboot.css.map */
|
||||
1
_site/assets/bootstrap/css/bootstrap-reboot.css.map
Normal file
1
_site/assets/bootstrap/css/bootstrap-reboot.css.map
Normal file
File diff suppressed because one or more lines are too long
8
_site/assets/bootstrap/css/bootstrap-reboot.min.css
vendored
Normal file
8
_site/assets/bootstrap/css/bootstrap-reboot.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
_site/assets/bootstrap/css/bootstrap-reboot.min.css.map
Normal file
1
_site/assets/bootstrap/css/bootstrap-reboot.min.css.map
Normal file
File diff suppressed because one or more lines are too long
482
_site/assets/bootstrap/css/bootstrap-reboot.rtl.css
vendored
Normal file
482
_site/assets/bootstrap/css/bootstrap-reboot.rtl.css
vendored
Normal file
@ -0,0 +1,482 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v5.1.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2021 The Bootstrap Authors
|
||||
* Copyright 2011-2021 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
|
||||
*/
|
||||
:root {
|
||||
--bs-blue: #0d6efd;
|
||||
--bs-indigo: #6610f2;
|
||||
--bs-purple: #6f42c1;
|
||||
--bs-pink: #d63384;
|
||||
--bs-red: #dc3545;
|
||||
--bs-orange: #fd7e14;
|
||||
--bs-yellow: #ffc107;
|
||||
--bs-green: #198754;
|
||||
--bs-teal: #20c997;
|
||||
--bs-cyan: #0dcaf0;
|
||||
--bs-white: #fff;
|
||||
--bs-gray: #6c757d;
|
||||
--bs-gray-dark: #343a40;
|
||||
--bs-gray-100: #f8f9fa;
|
||||
--bs-gray-200: #e9ecef;
|
||||
--bs-gray-300: #dee2e6;
|
||||
--bs-gray-400: #ced4da;
|
||||
--bs-gray-500: #adb5bd;
|
||||
--bs-gray-600: #6c757d;
|
||||
--bs-gray-700: #495057;
|
||||
--bs-gray-800: #343a40;
|
||||
--bs-gray-900: #212529;
|
||||
--bs-primary: #0d6efd;
|
||||
--bs-secondary: #6c757d;
|
||||
--bs-success: #198754;
|
||||
--bs-info: #0dcaf0;
|
||||
--bs-warning: #ffc107;
|
||||
--bs-danger: #dc3545;
|
||||
--bs-light: #f8f9fa;
|
||||
--bs-dark: #212529;
|
||||
--bs-primary-rgb: 13, 110, 253;
|
||||
--bs-secondary-rgb: 108, 117, 125;
|
||||
--bs-success-rgb: 25, 135, 84;
|
||||
--bs-info-rgb: 13, 202, 240;
|
||||
--bs-warning-rgb: 255, 193, 7;
|
||||
--bs-danger-rgb: 220, 53, 69;
|
||||
--bs-light-rgb: 248, 249, 250;
|
||||
--bs-dark-rgb: 33, 37, 41;
|
||||
--bs-white-rgb: 255, 255, 255;
|
||||
--bs-black-rgb: 0, 0, 0;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
||||
--bs-body-font-family: var(--bs-font-sans-serif);
|
||||
--bs-body-font-size: 1rem;
|
||||
--bs-body-font-weight: 400;
|
||||
--bs-body-line-height: 1.5;
|
||||
--bs-body-color: #212529;
|
||||
--bs-body-bg: #fff;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
:root {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: var(--bs-body-font-family);
|
||||
font-size: var(--bs-body-font-size);
|
||||
font-weight: var(--bs-body-font-weight);
|
||||
line-height: var(--bs-body-line-height);
|
||||
color: var(--bs-body-color);
|
||||
text-align: var(--bs-body-text-align);
|
||||
background-color: var(--bs-body-bg);
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 1rem 0;
|
||||
color: inherit;
|
||||
background-color: currentColor;
|
||||
border: 0;
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
hr:not([size]) {
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
h6, h5, h4, h3, h2, h1 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: calc(1.375rem + 1.5vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h1 {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: calc(1.325rem + 0.9vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h2 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: calc(1.3rem + 0.6vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h3 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h4 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
abbr[title],
|
||||
abbr[data-bs-original-title] {
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
cursor: help;
|
||||
-webkit-text-decoration-skip-ink: none;
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul {
|
||||
padding-right: 2rem;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: 0.5rem;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 0.875em;
|
||||
}
|
||||
|
||||
mark {
|
||||
padding: 0.2em;
|
||||
background-color: #fcf8e3;
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 0.75em;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #0d6efd;
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:hover {
|
||||
color: #0a58ca;
|
||||
}
|
||||
|
||||
a:not([href]):not([class]), a:not([href]):not([class]):hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: var(--bs-font-monospace);
|
||||
font-size: 1em;
|
||||
direction: ltr ;
|
||||
unicode-bidi: bidi-override;
|
||||
}
|
||||
|
||||
pre {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
font-size: 0.875em;
|
||||
}
|
||||
pre code {
|
||||
font-size: inherit;
|
||||
color: inherit;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 0.875em;
|
||||
color: #d63384;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a > code {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
kbd {
|
||||
padding: 0.2rem 0.4rem;
|
||||
font-size: 0.875em;
|
||||
color: #fff;
|
||||
background-color: #212529;
|
||||
border-radius: 0.2rem;
|
||||
}
|
||||
kbd kbd {
|
||||
padding: 0;
|
||||
font-size: 1em;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
img,
|
||||
svg {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table {
|
||||
caption-side: bottom;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
color: #6c757d;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
text-align: -webkit-match-parent;
|
||||
}
|
||||
|
||||
thead,
|
||||
tbody,
|
||||
tfoot,
|
||||
tr,
|
||||
td,
|
||||
th {
|
||||
border-color: inherit;
|
||||
border-style: solid;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus:not(:focus-visible) {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
[role=button] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
select {
|
||||
word-wrap: normal;
|
||||
}
|
||||
select:disabled {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
[list]::-webkit-calendar-picker-indicator {
|
||||
display: none;
|
||||
}
|
||||
|
||||
button,
|
||||
[type=button],
|
||||
[type=reset],
|
||||
[type=submit] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
button:not(:disabled),
|
||||
[type=button]:not(:disabled),
|
||||
[type=reset]:not(:disabled),
|
||||
[type=submit]:not(:disabled) {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
float: right;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
line-height: inherit;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
legend {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
legend + * {
|
||||
clear: right;
|
||||
}
|
||||
|
||||
::-webkit-datetime-edit-fields-wrapper,
|
||||
::-webkit-datetime-edit-text,
|
||||
::-webkit-datetime-edit-minute,
|
||||
::-webkit-datetime-edit-hour-field,
|
||||
::-webkit-datetime-edit-day-field,
|
||||
::-webkit-datetime-edit-month-field,
|
||||
::-webkit-datetime-edit-year-field {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-inner-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type=search] {
|
||||
outline-offset: -2px;
|
||||
-webkit-appearance: textfield;
|
||||
}
|
||||
|
||||
[type="tel"],
|
||||
[type="url"],
|
||||
[type="email"],
|
||||
[type="number"] {
|
||||
direction: ltr;
|
||||
}
|
||||
::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-color-swatch-wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
::file-selector-button {
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */
|
||||
1
_site/assets/bootstrap/css/bootstrap-reboot.rtl.css.map
Normal file
1
_site/assets/bootstrap/css/bootstrap-reboot.rtl.css.map
Normal file
File diff suppressed because one or more lines are too long
8
_site/assets/bootstrap/css/bootstrap-reboot.rtl.min.css
vendored
Normal file
8
_site/assets/bootstrap/css/bootstrap-reboot.rtl.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4866
_site/assets/bootstrap/css/bootstrap-utilities.css
vendored
Normal file
4866
_site/assets/bootstrap/css/bootstrap-utilities.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
_site/assets/bootstrap/css/bootstrap-utilities.css.map
Normal file
1
_site/assets/bootstrap/css/bootstrap-utilities.css.map
Normal file
File diff suppressed because one or more lines are too long
7
_site/assets/bootstrap/css/bootstrap-utilities.min.css
vendored
Normal file
7
_site/assets/bootstrap/css/bootstrap-utilities.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4857
_site/assets/bootstrap/css/bootstrap-utilities.rtl.css
vendored
Normal file
4857
_site/assets/bootstrap/css/bootstrap-utilities.rtl.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
7
_site/assets/bootstrap/css/bootstrap-utilities.rtl.min.css
vendored
Normal file
7
_site/assets/bootstrap/css/bootstrap-utilities.rtl.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
11266
_site/assets/bootstrap/css/bootstrap.css
vendored
Normal file
11266
_site/assets/bootstrap/css/bootstrap.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
_site/assets/bootstrap/css/bootstrap.css.map
Normal file
1
_site/assets/bootstrap/css/bootstrap.css.map
Normal file
File diff suppressed because one or more lines are too long
7
_site/assets/bootstrap/css/bootstrap.min.css
vendored
Normal file
7
_site/assets/bootstrap/css/bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
_site/assets/bootstrap/css/bootstrap.min.css.map
Normal file
1
_site/assets/bootstrap/css/bootstrap.min.css.map
Normal file
File diff suppressed because one or more lines are too long
11242
_site/assets/bootstrap/css/bootstrap.rtl.css
vendored
Normal file
11242
_site/assets/bootstrap/css/bootstrap.rtl.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
_site/assets/bootstrap/css/bootstrap.rtl.css.map
Normal file
1
_site/assets/bootstrap/css/bootstrap.rtl.css.map
Normal file
File diff suppressed because one or more lines are too long
7
_site/assets/bootstrap/css/bootstrap.rtl.min.css
vendored
Normal file
7
_site/assets/bootstrap/css/bootstrap.rtl.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
_site/assets/bootstrap/css/bootstrap.rtl.min.css.map
Normal file
1
_site/assets/bootstrap/css/bootstrap.rtl.min.css.map
Normal file
File diff suppressed because one or more lines are too long
6812
_site/assets/bootstrap/js/bootstrap.bundle.js
vendored
Normal file
6812
_site/assets/bootstrap/js/bootstrap.bundle.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
_site/assets/bootstrap/js/bootstrap.bundle.js.map
Normal file
1
_site/assets/bootstrap/js/bootstrap.bundle.js.map
Normal file
File diff suppressed because one or more lines are too long
7
_site/assets/bootstrap/js/bootstrap.bundle.min.js
vendored
Normal file
7
_site/assets/bootstrap/js/bootstrap.bundle.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
_site/assets/bootstrap/js/bootstrap.bundle.min.js.map
Normal file
1
_site/assets/bootstrap/js/bootstrap.bundle.min.js.map
Normal file
File diff suppressed because one or more lines are too long
4999
_site/assets/bootstrap/js/bootstrap.esm.js
vendored
Normal file
4999
_site/assets/bootstrap/js/bootstrap.esm.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
_site/assets/bootstrap/js/bootstrap.esm.js.map
Normal file
1
_site/assets/bootstrap/js/bootstrap.esm.js.map
Normal file
File diff suppressed because one or more lines are too long
7
_site/assets/bootstrap/js/bootstrap.esm.min.js
vendored
Normal file
7
_site/assets/bootstrap/js/bootstrap.esm.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
_site/assets/bootstrap/js/bootstrap.esm.min.js.map
Normal file
1
_site/assets/bootstrap/js/bootstrap.esm.min.js.map
Normal file
File diff suppressed because one or more lines are too long
5046
_site/assets/bootstrap/js/bootstrap.js
vendored
Normal file
5046
_site/assets/bootstrap/js/bootstrap.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
_site/assets/bootstrap/js/bootstrap.js.map
Normal file
1
_site/assets/bootstrap/js/bootstrap.js.map
Normal file
File diff suppressed because one or more lines are too long
7
_site/assets/bootstrap/js/bootstrap.min.js
vendored
Normal file
7
_site/assets/bootstrap/js/bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
_site/assets/bootstrap/js/bootstrap.min.js.map
Normal file
1
_site/assets/bootstrap/js/bootstrap.min.js.map
Normal file
File diff suppressed because one or more lines are too long
1
_site/assets/css/style.css
Normal file
1
_site/assets/css/style.css
Normal file
@ -0,0 +1 @@
|
||||
@import '/assets/bootstrap/css/bootstrap.min.css';
|
||||
10
_site/assets/css/styledsi.css
Normal file
10
_site/assets/css/styledsi.css
Normal file
@ -0,0 +1,10 @@
|
||||
#content-wrap {
|
||||
padding-bottom: 2.5rem; /* Footer height */
|
||||
}
|
||||
|
||||
#footer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 2.5rem; /* Footer height */
|
||||
}
|
||||
BIN
_site/assets/dsi/background.jpg
Normal file
BIN
_site/assets/dsi/background.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.4 KiB |
BIN
_site/assets/dsi/blankprompt.png
Normal file
BIN
_site/assets/dsi/blankprompt.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.0 KiB |
BIN
_site/assets/dsi/box.png
Normal file
BIN
_site/assets/dsi/box.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 70 KiB |
BIN
_site/assets/dsi/boxfull.png
Normal file
BIN
_site/assets/dsi/boxfull.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
BIN
_site/assets/dsi/boxoverlay.png
Normal file
BIN
_site/assets/dsi/boxoverlay.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user