text:
Q: htlatex filename.tex "xhtml,mathml" I want to generate XHTML/MathML along with all equations as image. If I run the below command, I get html and equation-images
htlatex filename.tex

If I run the below command, I get html, and Mathml but not equation-images.
htlatex filename.tex "xhtml,mathml"

Please advise how to get HTML, MathML along with images for all mathml/equations.

A: This is impossible by default, some macros are redefined with mathml output and image output would be wrong. Some possible solution could be to produce document with images first and then reuse images with mathml. The issue is that the images may get out of sync with mathml and you would need to manually correct it.
IMHO, easiest way is to  use some external scripting. Extracting generated mathml and converting it to images seems to be a best solution. For this task, we can use slimer.js, command line scriptable browser.
We can script it to save the images - it is based on Firefox's Gecko engine which supports mathml.
For mathml extraction, we can use make4ht filter, mathml-alt.mk4:
local filter = require "make4ht-filter"
local i = 0
local process = filter{function(s)
  local t = {}
  local par = Make.params
  local s =  s:gsub("(<math.-</math>)",function(a)
    i = i + 1
    local fn = string.format("%s-%d.%s", par.input, i, "png")
    local img = string.format("<img src='%s' />", fn)
    table.insert(t, {mathml=a, file = fn})
    return a .. img
  end)
  local xml =io.open(par.input .. "-mathml.xml", "w")
  xml:write("<mathbundle>\n")
  for _,v in ipairs(t) do
    xml:write(string.format("<mathitem filename='%s'>\n", v.file))
    xml:write(v.mathml)
    xml:write("</mathitem>\n")
  end
  xml:write("</mathbundle>")
  xml:close()
  return s
end}

Make:htlatex {}
Make:match("html$", process)

compile the TeX file with
make4ht -e mathml-alt.mk4 filename mathml

this build file uses filter which process the html file and save all mathml elements to a xml file, filename-mathml.xml. It also inserts <img> elements pointing to not yet existing images directly after </math> tags. You may adapt the behavior to suit your needs, this version doesn't look nice.
Now we need to create some simple script for slimer.js to save web pages as image. scripts are created in JavaScript. we can name it saveimage.js:
var page = require('webpage').create();
var input = phantom.args[0];
var output = phantom.args[1];
page.open(input, function (status) {
    page.render(output);
    slimer.exit();
});

it takes two arguments, first is path to html page, the second name of the image.
now we need to process the xml file with saved  mathml and convert it to images. processmathml.lua:
local file = io.open(arg[1],"r")
local s = file:read("*all")
local dir = lfs.currentdir()
file:close()

local tpl = [[
<DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style type="text/css">
width:auto;
height:auto;
</style>
</head>
<body>
%s
</body>
</html>
]]

for filename, mathml in s:gmatch("<mathitem filename='(.-)'>%s*(.-)</mathitem>") do
  local htmlname = filename:gsub("%.[^%.]+$",".html")
  print(htmlname)
  local f = io.open(htmlname,"w")
  f:write(string.format(tpl, mathml))
  f:close()
  local fn = "file://"..dir .. "/" .. htmlname
  os.execute("slimerjs saveimage.js ".. fn .. " " .. filename)
  os.execute("convert -trim ".. filename .. " ".. filename)
  -- os.execute("./autotrim ".. filename .. " ".. filename)
  -- print(filename, mathml)
end

run it as
texlua processmathml.lua filename-mathml.xml

it processes all saved mathml, saves it to an empty html page, execute slimer script and then trim spurious whitespace with imagemagick.
the result:

as you can see the rendering looks same, as I use Firefox, the only difference is that imline math images have wrong baseline, which is common issue for image math. And of course, it doesn't as good as images generated by LaTeX.
Tex file used for examples:
\documentclass[12pt]{article}
\usepackage{amssymb,amsmath,latexsym}

% Page length commands go here in the preamble
\setlength{\oddsidemargin}{-0.25in} % Left margin of 1 in + 0 in = 1 in
\setlength{\textwidth}{7in}   % Right margin of 8.5 in - 1 in - 6.5 in = 1 in
\setlength{\topmargin}{-.75in}  % Top margin of 2 in -0.75 in = 1 in
\setlength{\textheight}{9.2in}  % Lower margin of 11 in - 9 in - 1 in = 1 in

\newtheorem{theorem}{Theorem}
\newtheorem{definition}{Definition}

\renewcommand{\baselinestretch}{1.5} % 1.5 denotes double spacing. Changing it will change the spacing

\setlength{\parindent}{0in}
\begin{document}
\title{A Sample \LaTeX \;Article}
\author{John Doe}
\date{\today}
\maketitle
\abstract{This a sample \LaTeX document that explains some of the \LaTeX commands}

\section{Introduction}
\LaTeX \; is a markup language designed and implemented by \textbf{Leslie Lamport}, based on \textbf{Donald E. Knuth}'s typesetting language \TeX.  The markup in the source file of a \LaTeX \; document my appear somewhat challenging, but the compiled result of the document is certainly a pleasing rendering of the mark-up material.\\

\LaTeX \; was built on \TeX 's foundation.  An article is divided into \emph{logical units}, including an abstract, various sections and subsections, theorems, and a bibliography.  The logical units are typed independently of one another.  Once all the units have been typed, \LaTeX \, controls the \emph{placement} and \emph{formating} of these elements. \LaTeX \; automatically numbers the sections, theorems, and equations in your article, and builds the cross-references.  If any changes is made to the article, it automatically renumbers its various parts and rebuilds the cross-references.\\

\emph{Packages} are extensions of \LaTeX.  \LaTeX \; commands, as a rule, start with a backslash (\textbackslash) and tells \LaTeX  to do something special. For example, in the instruction\\
\verb+\emph{instructions to \LaTeX} +, \verb+\emph+ is a \LaTeX \; command. Another kind of instruction is called an \emph{environment}. For example, the commands \verb+\begin{flushright}+ and \verb+\end{flushright}+ enclose a \verb+flushright+ environment---texts that are typed inside this environment are right justified (lined up against the right margin) when typeset.

\section{Typing Text}
The following keys are used to type text in a \LaTeX \; source file:
\begin{center}
   \begin{verbatim}
         a-z  A-Z  0-9
         +  =  *  /  ( )  [ ]
   \end{verbatim}
\end{center}
You may also use the following punctuation marks:
\begin{center}
   \begin{verbatim}
     ,  ;  .  ?  !  :  `  '  -
   \end{verbatim}
\end{center}
and the spacebar, and the Return (or Enter) key.\\

There are thirteen special keys that are mostly used in \LaTeX \; instructions:
\begin{center}
   \begin{verbatim}
      #  $  %  &  ~  _  ^  \  { }  @  "  |
   \end{verbatim}
\end{center}
If you need to use them in your document, there  are commands available for typesetting these special characters. For example, \$ is typed as \verb+\$+, the underscore (\_) is typed as \verb+\_+, and \% is typed as \verb+\%+, whereas \"{a} is typed as \verb+\"{a}+, and @ is simply typed \verb+@+.\\

In a \LaTeX \; source file, each \emph{comment} line begins with \%. \LaTeX \;  will ignore everything on the line after the \% character. \\

The \emph{document class}, declared by the command \verb+\documentclass{..}+, in a \LaTeX \; source file controls how the document will be formatted. \LaTeX, by default, fully justifies the text by placing a certain size space between words---the \emph{interword space}---and a somewhat larger space between sentences--the \emph{intersentence space}.  To force an interword space, you can use the \verb+\+$_{\sqcup}$ command (the $_{\sqcup}$ symbol indicates a blank space). The \~ \, (tilde) command also forces an interword space, but with a difference: it keeps words together on the same line.  It is called a ``tie'' or ``non-breakable space.''\\

When \LaTeX \; encounters a period, it must decide whether or not it indicates the end of a sentence. It uses the following rule: A period following a capital letter (e.g., A.) is interpreted as being part of an abbreviation or an initial and will be followed by an interword space; otherwise, it signifies the end of a sentence and will be followed by an intersentence space.  If this rule causes problems in your document, you can follow the period with  \verb+\+$_{\sqcup}$ to force an interword space, or precede the period with \verb+\@+ to force an intersetence space.\\

In a \LaTeX \; document source file, left double quotes are typed a \verb+` `+ (two left single quotes) and right double quotes are type as \verb+' '+ (two right single quotes). The left single quote key is usually in the upper-left or upper-right corner of the keyboard, and shares a key with the tilde (\verb+~+) key.\\

In a \LaTeX \; command that requires an argument, the argument follows the name of the command and is placed between \{ and \}. Command names are \emph{case sensitive}. The command \verb+\\+ (\verb+\newline+ is another form) breaks a line. You can use the \verb+\\+ command and specify an appropriate amount of vertical space, for example \verb+\\[1in]+. Note that this command uses \emph{square brackets} rather than braces because the argument  is \emph{optional}. The distance/spacing may be given in points(pt), centimenters(cm), or inches(in).  To force a page break, use \verb+\newpage+.

\section{Typing Math}
In addition to the keys listed above, you need the keys \verb+|, <+, and \verb+>+ to type mathematical formulas. (\verb+|+ is the shifted \verb+\+ key on many keyboards). \\

There are two kinds of math formulas and environments:
\begin{enumerate}
   \item \emph{Inline math environments} open and close with \$ or open with \verb+\(+ and close with \verb+\)+.
   \item \emph{Displayed math environments} open with \verb+\[+ and close with \verb+\]+.  Other forms of the displayed
         environment are \verb+\begin{equation*} ... \end{equation*}+ and\\
          \verb+\begin{equation} ... \end{equation}+.
\end{enumerate}
Within the math environment, \LaTeX uses its own spacing rules and completely ignores the number of white spaces typed with two exceptions:
\begin{enumerate}
  \item Spaces that delimit commands (e.g., in \verb+$\infty a$+, the space is not ignored; in fact, \verb+\inftya$+ is
        an error)
  \item Spaces in the arguments of commands that temporarily revert to text mode (\verb+\mbox+ and \verb+\text+ are such commands).
\end{enumerate}
In text mode, many spaces equal one space; whereas, in math mode, spaces are ignored (unless they terminate a command). To asjust the spacing in a typeset document, use a spacing command. The same formula may be typeset differently depending on whether it is inline or display. For example, $\sum_{i=1}^{n} i^{2}$ is inline math.  The following is the same expression as displayed math
\[
  \sum_{i=1}^{n} i^{2}.
\]
Math symbols are invoked by commands inside a math formula or environment. The math symbols are organized into tables in Appendix A of textbook. Some commands (e.g. \verb+\sqrt+) need arguments enclosed in braces (\{ and \}).  For example, to typeset $\sqrt{x^{2} y^{2}}$, type \verb+$\sqrt{x^{2} y^{2}}$+. To typeset $\sqrt[n]{x^{2} y^{2}}$, type \verb+$\sqrt[n]{x^{2} y^{2}}$+. Some commends need more than one arguments.  For example to typeset
\[
   \frac{\sin x}{\cos^{2} x + \tan x}
\]
type
\begin{verbatim}
\[
   \frac{\sin x}{\cos^{2} x + \tan x}
\]
\end{verbatim}
\verb+\frac+ is the command; $\sin x$ and $\cos^{2} x + \tan x$ are the arguments.\\

\begin{theorem}
  This is the Pythagorean Theorem. It says
\[
x^{2}+y^{2}=z^{2}.
\]

\end{theorem}
\begin{definition}
Earth is where life is possible.
\end{definition}

\section{References}
Michael Downes \emph{Short Math Guide for \LaTeX}, AMS, 2002\\[0.2in]
George Gratzer, \emph{First Steps in \LaTeX}, Springer-Verlag, New York, 1999\\[0.2in]

\end{document}


Comments: Moonroof, Third Row Seat, Nav System, Heated Leather Seats, iPod/MP3 Input, Panoramic Roof, Power Liftgate, CRYSTAL WHITE PEARL METALLIC, CARBON FIBER INLAYS, 2ND ROW INTEGRATED CENTER BOOSTER CUS... ADVANCED PACKAGE, All Wheel Drive, Aluminum Wheels, CHARCOAL, NUBUCK/NAPPA LEATHER SEATIN... Crystal White Pearl Metallic exterior and Charcoal interior, R-Design trim. FUEL EFFICIENT 26 MPG Hwy/19 MPG City! CLICK NOW!
ADVANCED PACKAGE: Graphical Head-Up Display (HUD), 360 Degree Surroundview Camera, Headlight High Pressure Cleaning, Full LED Headlights w/ABL, AHB2 & LED DRL, Park Assist Pilot & Front Park Assist, CARBON FIBER INLAYS, CRYSTAL WHITE PEARL METALLIC, 2ND ROW INTEGRATED CENTER BOOSTER CUSHION, CHARCOAL, NUBUCK/NAPPA LEATHER SEATING SURFACES.
Navigation, Power Liftgate, iPod/MP3 Input, Third Row Seat, Panoramic Roof. Rear Spoiler, MP3 Player, Sunroof, All Wheel Drive, Aluminum Wheels. Volvo R-Design with Crystal White Pearl Metallic exterior and Charcoal interior features a 4 Cylinder Engine with 316 HP at 5700 RPM*. 4 Year/50,000 Mile Manufacture Warranty plus 3 Years Free Factory Scheduled Maintenance, see Sales Advisor for details.
Great Gas Mileage: 26 MPG Hwy. Approx. Original Base Sticker Price: $66,500*.


A further three Chinese manufacturers have been pulled from the minimum import price (MIP) after they were found to be selling in the European Union at rates below those stipulated by the price undertaking.
Osda, Linuo and Qixin were all removed by the European Commission after it was found they were importing into Europe to related companies and avoiding the 43p/w MIP, according to EU documents.
The agreement was negotiated by the European Commission and the Chinese Chamber of Commerce Import and Export of Machinery and Electronic Products (CCCME).
"…The Commission informed the CCCME about the above breaches by the three exporting producers showing a similar pattern and stated at the same time that should breaches of a similar pattern persist in the future, the Commission might re-assess the overall practicability of the undertaking," it said in the notification of the latest expulsions.
The trio become the latest companies found to have been in breach of the MIP imposed by the Brussels-Beijing deal that allows companies to avoid punitive trade defence tariffs. In addition to Shinetime, ZN Shine, Canadian Solar, ET Solar and ReneSola being removed, Trina Solar, CNPV, Lerri and Longi have all voluntarily withdrawn.
The Commission's words represent a change in tone regarding the MIP, with previous notices simply stating that individual breaches did not represent "systematic" failure of the undertaking.
The EU governing body is already carrying out a review of the anti-dumping tariffs which were scheduled to have ended in December 2015. The outcome of the review is of particular interest to the UK as a net importer of solar and therefore subject to higher prices resulting from the MIP.
The Solar Trade Association has estimated that the MIP adds 7% extra to the cost of a typical domestic solar PV installation and 13% to the cost of a large-scale installation and both the energy secretary Amber Rudd and junior minister Andrea Leadsom are on record as being opposed to the scheme.
The Commission's review could see the MIP extended for a further five years however it is widely considered that it will be repealed long before the UK is set to leave EU following the Brexit vote.


All three books by author, Linnhe McCarron, have country settings. Book 1, Fool Me Once, and Book 2, A Bitter Wind Blows, are set in the spectacularly beautiful rural Big South Fork, Tennessee. Main characters Ronnie Chandler, Rickie Ahlers and Andee Barton are riders who own Horse Country Real Estate, selling horse properties to horse people.
Work is about to commence on Book 3, Signs of Life, and it opens in spectacularly beautiful rural Vermont with main character, Asha Hamilton, a disgraced former Olympic event rider and present-day riding instructor who was mentioned in Book 1, introduced in Book 2, and is about to become a main character in this latest edition of the Riverwood series.


Nothing we can do impresses God. We cannot work our way into heaven. However, for some reason God chooses to use us in his work here on earth. We are created to do good works, to be servants, to care for widows and orphans, to love the unlovable. Sometimes that gets messy. That's the time to roll up our sleeves and get to work.
At least, not just any kind of dirt. It's a washed, redeemed, sanctified kind of dirt. God formed man from the dust of the earth, and to dust we will return. But dust is dry and lifeless, so he also breathed into us the breath of life and he will wash us in the life-giving water. The scriptures give us the rich analogy – "We are the clay, you are our potter." Clay is dirt that has been prepared for service. From dry, dirty, lifeless dust to smooth, clean, responsive clay in the Master Potter's hands!
We come into this world totally selfish, with hard hearts, spiritually dead. Our very nature is rebellious and self-serving. We can't change ourselves, but we can be changed. Bathed in the water of the Word and surrendered to the breaking down of our defenses and pride, our hard stone-like hearts are replaced with soft hearts of flesh. We become alive spiritually, regenerated, impressionable. We take the impression of the fingers of God who begins to form us into his image. Blessed are the flexible, for they shall not break.
Life can become dizzying. Being pushed and pulled in different directions, we sometimes lose our way. Things get out of balance and we are overwhelmed, discouraged, depressed or bitter. Our world seems to be spinning out of control. But when we humble ourselves under the mighty hands of God our Potter, he brings our lives back in control – HIS control. Our busy lives don't suddenly stop, although a little simplifying might be in order, but he gives us peace. Our focus is changed. He guides us each step of the way, as we learn to rely on his strength, his wisdom.
Centrifugal force does not automatically spin clay into vessels. And gravity certainly doesn't make the clay rise on it's own. There is a need, a plan, and skilled execution. Bowls, pitchers, vases, planters, mugs – all have specific functions and certain design considerations. The potter knows what he is making even when the finished pot is not yet recognizable. The farmer knows what he will harvest as he plants the seeds. It is no accident. We can't always see what we will be, but we know we are being formed according to his plan. Don't try to be something you are not. Life's greatest contentment comes with being who God made you to be.
While certainly there are sculptural elements in the potter's work, there is a major difference. Sculptors carve, chip, forge, or otherwise shape wood, stone, metal or other material into something it is not. A sculptor may carve a piece of wood to look like an eagle, or a block of stone to resemble a man. They shape from the outside, removing all material that isn't needed.
Potters, on the other hand, work not only on the outside, but on the inside as well. To do that, the potter must have access to the inside – the potter must actually go into the clay. A form can be shaped from the outside only, but it isn't a vessel because it's full of clay. A clay form must be filled with air to be a vessel – to be a container. Filling this form with air seemingly breathes life into this lifeless substance. Likewise, if we do not have the Spirit, the "pneuma," living in us, we are simply filled with ourselves, unable to serve our ultimate purpose. We can't be filled until we have been emptied.
Smooth seas don't skilful sailors make. No one likes tests and trials. The clay pot assumes he is completed when he hardens into his final form. But untested, unfired clay is pretty useless – unable to withstand life's storms or to fulfill his created purpose. The fire is not just helpful; it is essential. Clay perceives the fire as destructive – evil – to be avoided. He thinks the fire will consume him, but the Potter knows how much he can stand, what temperature is needed. The result is a transformation into a brand new material, never to be common clay again. This material is strong, like stone - having stood the test – unaffected by heat, water, time, decay or even acid. And even when a mighty blow smashes it to pieces, those pieces will survive almost indefinitely to teach future generations about their ancestors' lives.
It seems everyone wants to be a star. We want recognition and admiration. We desire significance in our lives, but we sometimes seek it in all the wrong ways. A vase can be made to display the beauty of God's creation, but they are often created to showcase their own beauty. In our culture, role models are often movie stars, rock stars, and athletes. Vocations are ranked by the salaries they can command. Community leaders and others in public positions can be seen as more important than those they purport to serve. Pride can cause us to think of ourselves more highly than others around us. Our significance is not found in our outward image. The danger of being in a position where others look up to us is when we start looking down on them. God opposes the proud, but gives grace to the humble.
Clay is not born in the potter's shop. Clay doesn't know how potters work or what is required to create a vessel. We don't fully know the potter's plan for us.
The transformation from clod to clay is amazing in itself, but smooth, well-wedged clay is not the goal – it's just the beginning. Finding oneself on the potter's wheel can be confusing when the purpose and the process are not known. The pressures, squeezing, and pulling move us in planned directions that we didn't plan. There are times spent sitting on the shelf, becoming firm in our new stage of growth. And then there's the fire. What may seem to be senseless torture is the very force that matures us. The potter knows exactly how much heat the clay can stand and he carefully tends and watches the fire to stop it at just the right time. Everything is according to the plan; nothing is left to chance. Not only can we trust the Potter, we must.
Humble yourselves therefore under the mighty hand of God, that he may lift you up in due time.


text:
Hat Yai All Destinations
Explore Hat Yai
Hat Yai Tours
All Hat Yai Tours
Things to do in Hat Yai
Hat Yai Magic Eye 3D Museum
Southern Thailand and Andaman Coast
Things to do in Thailand
Things to do in Gulf of Thailand
Things to Do & Must-See Attractions in Hat Yai
Hat Yai Magic Eye 3D Museum Tours & Tickets
More Tours in Hat Yai
Things to do near Hat Yai
Things to do in Langkawi
Things to do in Ko Lipe
Things to do in Ko Lanta
Things to do in Penang
Things to do in Krabi
Things to do in Ko Phi Phi Don
Things to do in Phuket
Things to do in Surat Thani
Things to do in Koh Samui
Things to do in Ko Pha Ngan
Things to do in Khao Lak
Things to do in Kuala Lumpur
Things to do in Kedah
Things to do in Southern Thailand and Andaman Coast

redpajama_set_name: RedPajamaCommonCrawl


text:
Is it banned to question in Quran?
Accor ding to the claims of the atheists, It is revealed in Quran Surat Maide not to ask any question or investigate about anything but in orher verses it is revealed THINK . Does Quran bans to question and say Think at the same time ? Is this a contradiction? Now lets check this subject…
"Did Prophet Muhammad Split the Moon in Two?"
'The Hour (of Judgment) is nigh, and the moon was cleft asunder. But if they see a Sign, they turn away, and say, "This is (but) continuous magic." '(Al-Qamar :1-2) The splitting of the moon is one of the signs that we are approaching the end of the world. The Quran usually declares the informations…
Qur'an is sufficient alone to live Islam
Qur'an is a wonderful book which Allah revealed to mankind for guidance and glad tidings. Allah has created life and death in order to discriminate and test who would do good deeds in this life. ( He Who created Death and Life, that He may try which of you is best in deed: and He…
According to the Quran, is a person who apostatizes murdered?
The one who apostatizes is called 'murted'. In orthodox İslamic sense, the punishment for apostasy is death penalty. For this practice which is not stated in the Quran, the so-called hadith"Kill him who changes his religion" (Buhârî, Jihad, 149) is adduced as proof. However, provisions of the Quran, fards, and harams and so on can…
The woman isn't created from the rib of the man
The myth, telling that the woman is created from the "rib" of the man,CONFLICTS with Quran. This mistake which is based on mythology is tried to be served as a religious truth via incorrect Hadith and epics. Whereas it is very clearly stated in Quran that both genders are created from one soul. The interpretations…
Is there any helper other than Allah? Do angels help?
Taking into consideration each verse in Quran separately apart from the flow of the subject and attributing different meanings to them is a widely used method in criticizing Quran. This method has been used in this situation trying to create a contradiction. But when you read the verses taking into consideration the integrity of the…
To how many days on earth is a day in the presence of Allah equal to?
The time mentioned in two verses of Quran is emphasized in this claim. Since the periods mentioned in Quran are different, some people claim that there is a contradiction. The verses are as follows: In fact a day in the presence of Allah is like a thousand years of your days. (22 Hac Surah –…
Does Allah forgive polytheism?
Some claim that there is a contradiction in the verses regarding the situation of the polytheists. Such claims are based on taking into consideration just a part of the verse and trying to interpret it differently. You can understand the subject better when you read the verses taking into consideration the flow of the subjects.…
What will be the situation of the Christians and Jews in eternity? Will they also be able to enter heaven?
It is claimed that there is a contradiction between the statements made in the verses regarding Christians and Jews. While some of the Christians and Jews are praised in some verses, they are also criticized in some other verses. When you interpret these verses not taking into consideration the flow of the subject, you will…
Was Pharaoh drowned? Or saved?
One of the claims put forth against Quran is regarding the drowning of Pharaoh. According to this claim, it is stated in some verses that Pharaoh was drowned while it is mentioned in some others that he was saved. This claim also does not reflect the truth just like the others. Here are the verses…
How many angels talked to Mary?
It is claimed that there is a contradiction in the verses where the conversation of Mary with the angels is mentioned arguing that it is mentioned about one angel in some places and about more than one angel in other places of the verses. Let us look at the verses to check the claims: There…
Is it forbidden to question according to Quran?
According to the claims of the atheists in the 101st verse of Maide Surah in Quran it says "DO NOT ASK – DO NOT QUESTION" and in other verses it says "THINK". Does Quran forbid questioning and demand us to think at the same time? Is this a contradiction? Let us check the details in…
Are the verses where terms such as "Tell, Tell that" are not mentioned contradictory?
Those people who are arguing about not using the term "Tell that" in some verses of Quran are criticizing blindly and without making any researches. For example; the term "Tell that" is implicitly mentioned in Enam Surah 104th verse, Neml Surah 91st verse and similar verses. This is a wording specific to Quran. The person…
Why the term "We" is mentioned in Quran?
Since it is not understood why the term "we" is used in some verses of the Quran, many questions are asked regarding this matter. This subject may be handled as follows; Allah uses the first person singular term "I" as well as the first person plural term "We" for himself. This is something related to…
The Claim Of Arab Racism İn Quran
The claim that there is Arab racism in Quran is mentioned often. Let us examine this groundless allegation put forward by especially European Orientalists in their texts. Let us understand the etymologic mean of racism in order to fully understand it. The dictionary explanation of the word racism is as follows: * The doctrine that…
Who are those who do not menstruate ''yet'' in Talak Surah?
Some twisted people tried to find grounds to their deeds in Quran and brought forward untrue provisions and confused the minds of people. Of course some of them may make mistakes. Most of the glossators are men. Some of them claimed that pregnant women should not get out of the house and by making slight…
Is it unfair to give two shares of the heritage to the man and one share to the woman?
I would like to remind some details from Quran before mentioning about the heritage matter. The man and woman are equal in Islam from the point of obedience. The Quran says ''tell to the believer men and believer women''. Nobody is superior to the other. Allah says ''No matter if he is man or woman,…
Will the infernal be fed with Oleander, Corn Spike or Purulence according to Quran?
– They will eat nothing but corn spike. (Gashiye Surah 6. verse) – The only food is purulence. (Hakka surah 36. verse) – The oleander is the food of sinners for sure. (Duhan surah 43-44. verses ) 3 different foods are mentioned in 3 verses. Isn't there contradiction in these verses? The claim of atheists: Will the infernal eat…
Is the Devil a Djin or an Angel?
Some people who claim that there is contradiction in Quran take the 34th verse of Bakara Surah as grounds to their claim. According to the claim ''Quran has been written by a human being and there is contradiction regarding the subject; is devil a djin or an angel?'' Bakara Surah 34th verse says: "We said…
Is there contradiction in verses regarding booty? What is the meaning of Allah and his Prophet getting the booty?
Another subject brought forward by those who search for contradictions in the Quran with prejudice and without trying to understand is the verses regarding the ''booty/earnings''. According to this claim; while it is mentioned in the 1st verse of Enfal Surah that the booty belongs to Allah and his Prophet, in the 41st verse of…
Is Kaba a safe place? How should we understand the verse about this subject?
Claim: Quran states that Kaba is a safe place. However we know that it is exposed to natural disasters such as flood from time to time. If it is vulnerable to floods or lightning, the verse stating that Kaba is a safe place is contradictory. This is a proof that Quran is not the words…
Who are the sons of Prophet Ibrahim?
There is no contradiction in Quran HOThose prejudiced people who think that there should be a contradiction in Quran most of the times lose their comprehension ability. This is why they think there is contradiction between the 71rd verse of Hud Surah and the 39th verse of Ibrahim Surah and it is a subject that…
Why does Allah swear in Quran?
There is no contradiction in Quran We see in Quran that Allah swears on different occasions, o various concepts and incidents. Some atheists and non-Muslims bring up this subject in virtual discussion platforms and claim that swearing is an act done by human beings and not by Allah… Even in various social media forums and…
Does coral grow in sweet waters?
Another claim of contradiction is submitted about the situation described in the 19th verse of Rahman Surah regarding characteristics of two different seas. The word (HARD AND SWEET WATERS) which is not found in the original verse has been mentioned between parentheses in many interpretations particularly in the interpretation of the Directorate of Religious Affairs.…
Is the Al-Aqsa Mosque mentioned in Quran the mosque in Jerusalem ?
We sometimes come across a claim that arises from wrong information in some atheist forums and discussion groups. According to this claim; the Al-Aqsa Mosque mentioned in the 1st verse of Isra Surah in Quran has been built after the revelation of Quran. So they claim that Quran was written after the death of Prophet…
Is everything created in pairs?
actualThe claim of atheists: The 49th verse of Zariyat Surah is scientifically wrong. It says in this verse that each LIVING THING has been created in pairs and today we know that every living thing is not consisting of pairs. How does this verse explain the creatures that are sporadic (that do not consist of…
Are the women fields of men according to Quran?
There is no any statement in Quran that contradicts with life and conscience, because Quran is a message from Allah who created us and the whole universe. Any of its verses does not contradict with another. In some atheist platforms it is claimed that in the 223rd verse of Bakara Surah, women are humiliated and…
Answer to the claim; "Why were Quran and the other Holy Books sent to the Middle East?
The claim that the religions which are believed by the people today and their prothets were sent to the Middle East and that there was no such an endeavour in the other regions of the world is in fact one of the most wrong evaluations being made. Allah says in his book that he has chosen prothets…
Did the Prophet order 400/900 Jews to be killed in Kurayza?
According to the rumour, one the Jewish tribes Beni Kurayza supported the Quraysh and their ally who made an unsuccessful attack to Medina in order to demolish Islam. The most serious attack made against the Islam was unsuccessful and then Beni Kurayza was under siege by the Prophet. When Beni Kureyza surrendered such as Beni…
Are the prophets equal, or is anyone of them superior ?
While it is mentioned that there is no difference between propjets in Bakara-285, in the 253rd verse of the same Surah it says "We made some of the prophets, superior to others." Bakara-285. The prophet,and the believers believed in the sent book. All of them believed in, his angels, his books, his prophets. "There is…
Is the earth flat or sphere according to Quran?
He created the lands and the skies. The night covers the day, and the day covers the night… (Zümer Surah, 5) The expressions of Quran in its verses that identify the universe are very remarkable. The word which is translated as "covers'' above is ''yukevviru'' in Arabic. The translation of this word in Turkish is…
Isn't it mentioned about love in Quran ?
Quran is the book sent by Allah in order to give social ethics to the people. This ethics is based on love, mercy, tolerance and the best of words. The word "Islam" means "peace" in Arabic. Allah sent Islam so that people can live based on love and peace. Those who believe, all of you…
Why is the thought organ heart in Quran?
The characteristics of Arabic is the reason. Every language has its own way of expressing. The word "Akil'' which means mind is an originally Arabic word used in Turkish. The real meaning of the word Akil is to ''bind''. The clever person binds himself not to do wrong and to make the right thing. The…
Are the Jews cursed in Quran or a master race?
While it is mentioned in some verses of Quran that the Jews have been deemed as a master race over the world (Bakara Surah 47, 122), it also mentioned in some verses that they are cursed (Nisa 46, Bakara 88). You may think that there is a contradiction between these verses when the subject is…
Was the universe created in 6 days or 8?
The atheists think that the subject of creation in 6 days is contradicted. In a verse it says ''I created the land and the sky and all between them in 6 days''. Another verse says ''created land in two days''. Another verse says ''created the sky in two days''. Another verse says ''created very stable…
What does killing of the polytheists according to the 5th verse of Tevbe Surah mean?
One of the verse in Quran that the atheists criticize and show it as a reason to their denial is the 5th verse of Tevbe Surah. They get the term ''kill the polytheists wherever you find'' mentioned here and claim that Islam is a religion of "savageness and war". In fact the first part of…
Is there any cancelled verse in Quran?
Nasih means the verse that cancels the provision and Mensuh means the verse of which its provision is cancelled. Nasih means to cancel the verse and make it invalid. Allah says the following regarding those who impair his verses in Sebe Surah 38: ''Those who strive to impair our verses; they are also included in…
Is there permission in Quran to beat women?
The interpretations made based upon sources out of Quran make people think that Quran gives permission to beat women but is it so in fact? Let us check the relevant Verse. The men are obliged to observe women because Allah gave both of them different gifts and features and the man is responsible of maintaining…
Is there child marriage in Quran?
The first subject that should be reminded to those who attack our Prophet due to the age of Aisha (Her Holiness) and claim that child marriage is allowed in Quran, is that the provisions can only be learned from Quran and they should not rely on sources that do not comply with Quran. Allah says"We…
Was the Quran sent to the Arab Peninsula only? Or is it universal?
There are some claims stating that Quran which is the word of Allah was sent just to the Arab peninsula and it is a book that concerns and encumbers the Arabs only … The owners of this claim which is absolutely out of logic and good intention cite the 7th verse of Shurah Surah and…
The one who apostatizes is called 'murted'. In orthodox İslamic sense, the punishment for apostasy is death penalty. For this practice which is not stated in the Quran, the so-called hadith "Kill him who changes his religion" (Buhârî, Jihad, 149) is adduced as proof. However, provisions of the Quran, fards, and harams and so on…
Who is the first Muslim according to?
The below statement is mentioned in Quran about most of the prophets. "I was ordered to be the first of the Muslims and: I was ordered not be a polytheist." [En'am Surah (6/14] "He does not have any partner. I was ordered so and I am the first of the Muslims." [En'am Surah (6/163] "In…
There isn't lapidation (recm) in the Quran?
According to Islam, if we want to learn the truth about an issue, we have to refer to the Quran. According to Islam, Allah told that He will protect only the Quran and stated everything He wanted from people at the same time. The Word of your Lord is perfect in truth and justice. None…


text:
package org.tinymediamanager.scraper.tmdb;

import static org.tinymediamanager.scraper.tmdb.TmdbMetadataProvider.providerInfo;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tinymediamanager.scraper.MediaMetadata;
import org.tinymediamanager.scraper.MediaScrapeOptions;
import org.tinymediamanager.scraper.MediaSearchOptions;
import org.tinymediamanager.scraper.MediaSearchResult;
import org.tinymediamanager.scraper.entities.Certification;
import org.tinymediamanager.scraper.entities.MediaArtwork;
import org.tinymediamanager.scraper.entities.MediaCastMember;
import org.tinymediamanager.scraper.entities.MediaGenres;
import org.tinymediamanager.scraper.entities.MediaLanguages;
import org.tinymediamanager.scraper.entities.MediaType;
import org.tinymediamanager.scraper.util.LanguageUtils;
import org.tinymediamanager.scraper.util.ListUtils;
import org.tinymediamanager.scraper.util.MetadataUtil;

import com.uwetrottmann.tmdb2.Tmdb;
import com.uwetrottmann.tmdb2.entities.AppendToResponse;
import com.uwetrottmann.tmdb2.entities.BaseCompany;
import com.uwetrottmann.tmdb2.entities.BaseKeyword;
import com.uwetrottmann.tmdb2.entities.BaseMovie;
import com.uwetrottmann.tmdb2.entities.CastMember;
import com.uwetrottmann.tmdb2.entities.Country;
import com.uwetrottmann.tmdb2.entities.CrewMember;
import com.uwetrottmann.tmdb2.entities.FindResults;
import com.uwetrottmann.tmdb2.entities.Genre;
import com.uwetrottmann.tmdb2.entities.Keywords;
import com.uwetrottmann.tmdb2.entities.Movie;
import com.uwetrottmann.tmdb2.entities.MovieResultsPage;
import com.uwetrottmann.tmdb2.entities.ReleaseDate;
import com.uwetrottmann.tmdb2.entities.ReleaseDatesResult;
import com.uwetrottmann.tmdb2.entities.SpokenLanguage;
import com.uwetrottmann.tmdb2.enumerations.AppendToResponseItem;

/**
 * The class TmdbMovieMetadataProvider is used to provide metadata for movies from tmdb
 */
class TmdbMovieMetadataProvider {
  private static final Logger LOGGER = LoggerFactory.getLogger(TmdbMovieMetadataProvider.class);

  private final Tmdb          api;

  public TmdbMovieMetadataProvider(Tmdb api) {
    this.api = api;
  }

  /**
   * searches a movie with the given query parameters
   *
   * @param query
   *          the query parameters
   * @return a list of found movies
   * @throws Exception
   *           any exception which can be thrown while searching
   */
  List<MediaSearchResult> search(MediaSearchOptions query) throws Exception {
    LOGGER.debug("search() " + query.toString());

    List<MediaSearchResult> resultList = new ArrayList<>();

    String searchString = "";
    Integer year = null;

    // check type
    if (query.getMediaType() != MediaType.MOVIE) {
      throw new Exception("wrong media type for this scraper");
    }

    if (StringUtils.isEmpty(searchString) && StringUtils.isNotEmpty(query.getQuery())) {
      searchString = query.getQuery();
    }

    if (query.getYear() != 0) {
      year = query.getYear();
    }

    if (StringUtils.isEmpty(searchString)) {
      LOGGER.debug("TMDB Scraper: empty searchString");
      return resultList;
    }

    boolean adult = providerInfo.getConfig().getValueAsBool("includeAdult");

    searchString = MetadataUtil.removeNonSearchCharacters(searchString);
    String language = query.getLanguage().getLanguage();
    if (StringUtils.isNotBlank(query.getLanguage().getCountry())) {
      language += "-" + query.getLanguage().getCountry();
    }
    String imdbId = "";
    int tmdbId = 0;

    // begin search
    LOGGER.info("========= BEGIN TMDB Scraper Search for: " + searchString);
    synchronized (api) {
      // 1. try with TMDBid
      if (query.getTmdbId() != 0) {
        // if we have already an ID, get this result and do not search
        tmdbId = query.getTmdbId();
        try {
          // /movie/{id}
          Movie movie = api.moviesService().summary(tmdbId, language).execute().body();
          verifyMovieTitleLanguage(query, movie);
          MediaSearchResult result = morphMovieToSearchResult(movie);
          resultList.add(result);
        }
        catch (Exception e) {
          LOGGER.warn("problem getting data from tmdb: " + e.getMessage());
        }
        LOGGER.debug("found " + resultList.size() + " results with TMDB id");
      }

      // 2. try with IMDBid
      if (resultList.size() == 0 && StringUtils.isNotEmpty(query.getImdbId())) {
        imdbId = query.getImdbId();
        try {
          // /find/{id}
          FindResults findResults = api.findService().find(imdbId, null, language).execute().body();
          if (findResults != null && findResults.movie_results != null) {
            for (Movie movie : findResults.movie_results) {
              if (verifyMovieTitleLanguage(query, new ArrayList<BaseMovie>(findResults.movie_results), resultList, true)) {
                break;
              }
              resultList.add(morphMovieToSearchResult(movie));
            }
          }
        }
        catch (Exception e) {
          LOGGER.warn("problem getting data from tmdb: " + e.getMessage());
        }
        LOGGER.debug("found " + resultList.size() + " results with IMDB id");
      }

      // 3. try with search string and year
      if (resultList.size() == 0) {
        try {
          // /search/movie
          MovieResultsPage resultsPage = api.searchService().movie(searchString, 1, language, adult, year, year, "phrase").execute().body();
          if (resultsPage != null && resultsPage.results != null) {
            for (BaseMovie movie : resultsPage.results) {
              if (verifyMovieTitleLanguage(query, resultsPage.results, resultList, false)) {
                break;
              }
              resultList.add(morphMovieToSearchResult(movie));
            }
          }
        }
        catch (Exception e) {
          LOGGER.warn("problem getting data from tmdb: " + e.getMessage());
        }
        LOGGER.debug("found " + resultList.size() + " results with search string");
      }

      // 4. if the last token in search string seems to be a year, try without :)
      if (resultList.size() == 0) {
        searchString = searchString.replaceFirst("\\s\\d{4}$", "");
        try {
          // /search/movie
          MovieResultsPage resultsPage = api.searchService().movie(searchString, 1, language, adult, null, null, "phrase").execute().body();
          if (resultsPage != null && resultsPage.results != null) {
            for (BaseMovie movie : resultsPage.results) {
              if (verifyMovieTitleLanguage(query, resultsPage.results, resultList, false)) {
                break;
              }

              resultList.add(morphMovieToSearchResult(movie));
            }
          }
        }
        catch (Exception e) {
          LOGGER.warn("problem getting data from tmdb: " + e.getMessage());
        }
        LOGGER.debug("found " + resultList.size() + " results with search string without year");
      }
    }

    LOGGER.info("found " + resultList.size() + " results");

    if (resultList.isEmpty()) {
      return resultList;
    }

    // final tasks for the search results
    for (MediaSearchResult result : resultList) {
      // calculate score for all found movies
      if ((StringUtils.isNotBlank(imdbId) && imdbId.equals(result.getIMDBId())) || String.valueOf(tmdbId).equals(result.getId())) {
        // perfect match
        result.setScore(1);
      }
      else {
        float score = MetadataUtil.calculateScore(searchString, result.getTitle());
        if (yearDiffers(year, result.getYear())) {
          float diff = (float) Math.abs(year - result.getYear()) / 100;
          LOGGER.debug("parsed year does not match search result year - downgrading score by " + diff);
          score -= diff;
        }
        result.setScore(score);
      }
    }

    return resultList;
  }

  /**
   * Fallback Language Mechanism - For IMDB Id.
   *
   * @param query
   *          the query options
   * @param movie
   *          the already found movie
   */
  private void verifyMovieTitleLanguage(MediaSearchOptions query, BaseMovie movie) {
    if (providerInfo.getConfig().getValueAsBool("titleFallback")) {
      Locale fallbackLanguage = new Locale(MediaLanguages.get(providerInfo.getConfig().getValue("titleFallbackLanguage")).getLanguage());

      // tmdb provides title = originalTitle if no title in the requested language has been found,
      // so get the title in a alternative language
      if ((movie.title.equals(movie.original_title) && !movie.original_language.equals(query.getLanguage().getLanguage()))
          && !query.getLanguage().equals(fallbackLanguage)) {
        try {
          String lang = MediaLanguages.get(providerInfo.getConfig().getValue("titleFallbackLanguage")).name().replace("_", "-");

          Movie fallbackMovie = api.moviesService().summary(movie.id, lang).execute().body();

          if (fallbackMovie == null) {
            return;
          }

          if (!StringUtils.isBlank(fallbackMovie.title)) {
            movie.title = fallbackMovie.title;
          }
        }
        catch (Exception ignored) {
          return;
        }
      }
    }
  }

  /**
   * Fallback Language Mechanism - For Search.
   *
   * @param query
   *          the query options
   * @param original
   *          the movie list retrieved with primary language.
   * @param resultList
   *          the list that results will be added.
   * @param findService
   *          is it called by findService?
   */
  private Boolean verifyMovieTitleLanguage(MediaSearchOptions query, List<BaseMovie> original, List<MediaSearchResult> resultList,
      Boolean findService) {
    if (providerInfo.getConfig().getValueAsBool("titleFallback")) {
      Locale fallbackLanguage = new Locale(MediaLanguages.get(providerInfo.getConfig().getValue("titleFallbackLanguage")).getLanguage());

      for (BaseMovie movie : original) {
        // tmdb provides title = originalTitle if no title in the requested language has been found,
        // so get the title in a alternative language
        if ((movie.title.equals(movie.original_title) && !movie.original_language.equals(query.getLanguage().getLanguage()))
            && !query.getLanguage().equals(fallbackLanguage)) {

          LOGGER.debug("Fallback: Title Inconsistency Found. Bypassing default functionality and Initiating Fallback Mechanism.");

          try {
            String lang = MediaLanguages.get(providerInfo.getConfig().getValue("titleFallbackLanguage")).name().replace("_", "-");

            List<BaseMovie> fallback;
            if (findService) {
              FindResults findResults = api.findService().find(query.getImdbId(), null, lang).execute().body();

              if (findResults == null || findResults.movie_results == null) {
                return false;
              }

              fallback = new ArrayList<BaseMovie>(findResults.movie_results);
            }
            else {
              MovieResultsPage movieResultsPage = api.searchService()
                  .movie(query.getQuery(), 1, lang, providerInfo.getConfig().getValueAsBool("includeAdult"),
                      query.getYear() != 0 ? query.getYear() : null, query.getYear() != 0 ? query.getYear() : null, "phrase")
                  .execute().body();

              if (movieResultsPage == null || movieResultsPage.results == null) {
                return false;
              }

              fallback = movieResultsPage.results;
            }

            resultList.clear();

            for (int i = 0; i < original.size(); i++) {
              BaseMovie originalMovie = original.get(i);
              BaseMovie fallbackMovie = fallback.get(i);

              if (originalMovie.title.equals(originalMovie.original_title) && !originalMovie.title.equals(fallbackMovie.title)
                  && !originalMovie.original_language.equals(query.getLanguage().getLanguage()) && !StringUtils.isBlank(fallbackMovie.title)) {
                LOGGER.debug(String.format("Fallback: Movie Replaced          ([%-32.32s] -> [%-32.32s])", originalMovie.title, fallbackMovie.title));
                resultList.add(morphMovieToSearchResult(fallbackMovie));
              }
              else {
                LOGGER.debug(String.format("Fallback: Movie Remained the Same ([%-32.32s])", originalMovie.title));
                resultList.add(morphMovieToSearchResult(originalMovie));
              }
            }
            return true;
          }
          catch (Exception exc) {
            return false;
          }
        }
      }
    }
    return false;
  }

  /**
   * Get the movie metadata for the given search options
   *
   * @param options
   *          the options for scraping
   * @return the metadata (never null)
   * @throws Exception
   *           any exception which can be thrown while scraping
   */
  MediaMetadata getMetadata(MediaScrapeOptions options) throws Exception {
    return getMetadata(options, false, null);
  }

  /**
   * Get the movie metadata for the given search options
   *
   * @param options
   *          the options for scraping
   * @param fallback
   *          whether this method called from fallback.
   * @param metadata
   *          the original metadata from the original result before callback.
   * @return the metadata (never null)
   * @throws Exception
   *           any exception which can be thrown while scraping
   */
  MediaMetadata getMetadata(MediaScrapeOptions options, boolean fallback, MediaMetadata metadata) throws Exception {
    LOGGER.debug("getMetadata() " + options.toString());

    Boolean titleFallback = providerInfo.getConfig().getValueAsBool("titleFallback");

    Locale fallbackLanguage = new Locale(MediaLanguages.get(providerInfo.getConfig().getValue("titleFallbackLanguage")).getLanguage());

    MediaMetadata md = new MediaMetadata(providerInfo.getId());
    int tmdbId = 0;

    // tmdbId from searchResult
    if (options.getResult() != null) {
      tmdbId = Integer.parseInt(options.getResult().getId());
    }

    // tmdbId from option - own id
    if (tmdbId == 0) {
      try {
        tmdbId = Integer.parseInt(options.getId(providerInfo.getId()));
      }
      catch (NumberFormatException ignored) {
      }
    }

    // tmdbId from option - legacy id
    if (tmdbId == 0) {
      tmdbId = options.getTmdbId();
    }

    // imdbId from option
    String imdbId = options.getImdbId();
    if (tmdbId == 0 && !MetadataUtil.isValidImdbId(imdbId)) {
      LOGGER.warn("not possible to scrape from TMDB - no tmdbId/imdbId found");
      return md;
    }

    String language = options.getLanguage().getLanguage();
    if (StringUtils.isNotBlank(options.getLanguage().getCountry())) {
      language += "-" + options.getLanguage().getCountry();
    }

    // scrape
    LOGGER.debug("TMDB: getMetadata: tmdbId = " + tmdbId + "; imdbId = " + imdbId);
    Movie movie = null;
    synchronized (api) {
      if (tmdbId == 0 && MetadataUtil.isValidImdbId(imdbId)) {
        try {
          // get the tmdbId via the imdbId
          int tempTmdbId = new TmdbMetadataProvider().getTmdbIdFromImdbId(imdbId);
          if (tempTmdbId > 0) {
            // and now get the full data
            movie = api.moviesService()
                .summary(tempTmdbId, language,
                    new AppendToResponse(AppendToResponseItem.CREDITS, AppendToResponseItem.RELEASE_DATES, AppendToResponseItem.TRANSLATIONS))
                .execute().body();
          }
        }
        catch (Exception e) {
          LOGGER.warn("problem getting data from tmdb: " + e.getMessage());
        }
      }
      if (movie == null && tmdbId != 0) {
        try {
          movie = api.moviesService()
              .summary(tmdbId, language, new AppendToResponse(AppendToResponseItem.CREDITS, AppendToResponseItem.RELEASE_DATES)).execute().body();
        }
        catch (Exception e) {
          LOGGER.warn("problem getting data from tmdb: " + e.getMessage());
        }
      }
    }
    if (movie == null) {
      LOGGER.warn("no result found");
      return md;
    }

    md = morphMovieToMediaMetadata(movie, options);

    // add some special keywords as tags
    // see http://forum.kodi.tv/showthread.php?tid=254004
    try {
      Keywords mk = api.moviesService().keywords(tmdbId).execute().body();
      for (BaseKeyword kw : ListUtils.nullSafe(mk.keywords)) {
        switch (kw.name) {
          case "aftercreditsstinger":
          case "duringcreditsstinger":
            md.addTag(kw.name);
            break;
          default:
            // ignore other tags?
            break;
        }
      }
    }
    catch (Exception e) {
      LOGGER.warn("Error getting keywords");
    }
    // check if we need to rescrape in the fallback language
    if (((movie.title.equals(movie.original_title) && !movie.original_language.equals(options.getLanguage().getLanguage()))
        || StringUtils.isBlank(movie.overview)) && (!options.getLanguage().equals(fallbackLanguage) || fallback) && titleFallback) {
      // title in original language or plot was empty - scrape in fallback language
      if (fallback) {
        LOGGER.debug("Movie data not found with fallback language. Returning original.");
        return metadata;
      }

      Locale oldLang = options.getLanguage();
      try {
        options.setLanguage(fallbackLanguage);
        LOGGER.debug("Re-scraping using fallback language " + MediaLanguages.valueOf(options.getLanguage().getLanguage()));

        MediaMetadata fallbackMd = getMetadata(options, true, md);

        if (StringUtils.isBlank(movie.overview) && !StringUtils.isBlank(fallbackMd.getPlot())) {
          md.setPlot(fallbackMd.getPlot());
        }
        if (movie.title.equals(movie.original_title) && !movie.original_language.equals(oldLang.getLanguage())
            && !StringUtils.isBlank(fallbackMd.getTitle())) {
          md.setTitle(fallbackMd.getTitle());
        }
        if (StringUtils.isBlank(movie.original_title) && !StringUtils.isBlank(fallbackMd.getOriginalTitle())) {
          md.setOriginalTitle(fallbackMd.getOriginalTitle());
        }
        if (StringUtils.isBlank(movie.tagline) && !StringUtils.isBlank(fallbackMd.getTagline())) {
          md.setTagline(fallbackMd.getTagline());
        }
      }
      catch (Exception ignored) {
      }
      finally {
        options.setLanguage(oldLang);
      }
    }

    return md;
  }

  private MediaSearchResult morphMovieToSearchResult(BaseMovie movie) {
    MediaSearchResult searchResult = new MediaSearchResult(providerInfo.getId(), MediaType.MOVIE);
    searchResult.setId(Integer.toString(movie.id));
    searchResult.setTitle(movie.title);
    searchResult.setOriginalTitle(movie.original_title);
    searchResult.setOriginalLanguage(movie.original_language);

    searchResult.setPosterUrl(TmdbMetadataProvider.configuration.images.base_url + "w342" + movie.poster_path);

    // parse release date to year
    if (movie.release_date != null) {
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(movie.release_date);
      searchResult.setYear(calendar.get(Calendar.YEAR));
    }

    return searchResult;
  }

  private MediaMetadata morphMovieToMediaMetadata(Movie movie, MediaScrapeOptions options) {
    MediaMetadata md = new MediaMetadata(providerInfo.getId());

    md.setId(providerInfo.getId(), movie.id);
    md.setTitle(movie.title);
    md.setOriginalTitle(movie.original_title);
    md.setPlot(movie.overview);
    md.setTagline(movie.tagline);
    md.setRuntime(movie.runtime);
    md.setRating(movie.vote_average);
    md.setVoteCount(movie.vote_count);

    // Poster
    if (StringUtils.isNotBlank(movie.poster_path)) {
      MediaArtwork ma = new MediaArtwork(providerInfo.getId(), MediaArtwork.MediaArtworkType.POSTER);
      ma.setPreviewUrl(TmdbMetadataProvider.configuration.images.base_url + "w185" + movie.poster_path);
      ma.setDefaultUrl(TmdbMetadataProvider.configuration.images.base_url + "w342" + movie.poster_path);
      ma.setLanguage(options.getLanguage().getLanguage());
      ma.setTmdbId(movie.id);
      md.addMediaArt(ma);
    }

    for (SpokenLanguage lang : ListUtils.nullSafe(movie.spoken_languages)) {
      if (providerInfo.getConfig().getValueAsBool("scrapeLanguageNames")) {
        md.addSpokenLanguage(LanguageUtils.getLocalizedLanguageNameFromLocalizedString(options.getLanguage(), lang.name, lang.iso_639_1));
      }
      else {
        md.addSpokenLanguage(lang.iso_639_1);
      }
    }

    for (Country country : ListUtils.nullSafe(movie.production_countries)) {
      if (providerInfo.getConfig().getValueAsBool("scrapeLanguageNames")) {
        md.addCountry(LanguageUtils.getLocalizedCountryForLanguage(options.getLanguage(), country.name, country.iso_3166_1));
      }
      else {
        md.addCountry(country.iso_3166_1);
      }
    }

    if (MetadataUtil.isValidImdbId(movie.imdb_id)) {
      md.setId(MediaMetadata.IMDB, movie.imdb_id);
    }

    // production companies
    for (BaseCompany company : ListUtils.nullSafe(movie.production_companies)) {
      md.addProductionCompany(company.name.trim());
    }

    // parse release date to year
    Date releaseDate = movie.release_date;
    if (releaseDate != null) {
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(releaseDate);
      md.setYear(calendar.get(Calendar.YEAR));
    }
    md.setReleaseDate(releaseDate);

    // releases & certification
    if (movie.release_dates != null) {
      for (ReleaseDatesResult countries : ListUtils.nullSafe(movie.release_dates.results)) {

        // only use the certification of the desired country (if any country has
        // been chosen)
        if (options.getCountry() == null || options.getCountry().getAlpha2().compareToIgnoreCase(countries.iso_3166_1) == 0) {
          // Any release from the desired country will do
          for (ReleaseDate countryReleaseDate : ListUtils.nullSafe(countries.release_dates)) {
            // do not use any empty certifications
            if (StringUtils.isEmpty(countryReleaseDate.certification)) {
              continue;
            }

            md.addCertification(Certification.getCertification(countries.iso_3166_1, countryReleaseDate.certification));

          }
        }
      }
    }

    // cast & crew
    if (movie.credits != null) {
      for (CastMember castMember : ListUtils.nullSafe(movie.credits.cast)) {
        MediaCastMember cm = new MediaCastMember();
        cm.setType(MediaCastMember.CastType.ACTOR);
        cm.setCharacter(castMember.character);
        cm.setName(castMember.name);

        if (!StringUtils.isEmpty(castMember.profile_path)) {
          cm.setImageUrl(TmdbMetadataProvider.configuration.images.base_url + "w185" + castMember.profile_path);
        }
        md.addCastMember(cm);
      }

      // crew
      for (CrewMember crewMember : ListUtils.nullSafe(movie.credits.crew)) {
        MediaCastMember cm = new MediaCastMember();
        if ("Director".equals(crewMember.job)) {
          cm.setType(MediaCastMember.CastType.DIRECTOR);
          cm.setPart(crewMember.department);
        }
        else if ("Writing".equals(crewMember.department)) {
          cm.setType(MediaCastMember.CastType.WRITER);
          cm.setPart(crewMember.department);
        }
        else if ("Production".equals(crewMember.department)) {
          cm.setType(MediaCastMember.CastType.PRODUCER);
          cm.setPart(crewMember.job);
        }
        else {
          continue;
        }
        cm.setName(crewMember.name);

        if (!StringUtils.isEmpty(crewMember.profile_path)) {
          cm.setImageUrl(TmdbMetadataProvider.configuration.images.base_url + "w185" + crewMember.profile_path);
        }
        md.addCastMember(cm);
      }
    }

    // Genres
    for (Genre genre : ListUtils.nullSafe(movie.genres)) {
      md.addGenre(TmdbMetadataProvider.getTmmGenre(genre));
    }
    // "adult" on TMDB is always some pr0n stuff, and not just rated 18+ content
    if (movie.adult) {
      md.addGenre(MediaGenres.EROTIC);
    }

    if (movie.belongs_to_collection != null) {
      md.setId(MediaMetadata.TMDB_SET, movie.belongs_to_collection.id);
      md.setCollectionName(movie.belongs_to_collection.name);
    }

    return md;
  }

  /**
   * Is i1 != i2 (when >0)
   */
  private boolean yearDiffers(Integer i1, Integer i2) {
    return i1 != null && i1 != 0 && i2 != null && i2 != 0 && i1 != i2;
  }
}

redpajama_set_name: RedPajamaGithub


text: export const SAY_HELLO = 'SAY_HELLO';


text:
Lady of the Lake still churning across Clear Lake
Published 6:15 pm Tuesday, May 24, 2022
CLEAR LAKE, Iowa — The iconic Lady of the Lake has given passengers an old-American tour of Clear Lake for 35 years now, and Scott Monson is celebrating six years as her owner.
"She's a labor of love" Monson called her. This 60-year-old paddle boat is one of the last remaining paddle boat ferries still in operation today.
Lady of the Lake was built by Dubuque Boat & Boiler Works in 1960. It is suspected that she was originally bought under the name "Running River."
Running River served as a ferry for freight in the beginning of her service, boasting a load of up to seven vehicles at a time as she traveled on the Missouri River.
In the 1980s, Lady of the Lake was restored by Gary and Karen Geist, who started excursions on Clear Lake. The Globe Gazette reports she has remained on the lake ever since, bringing joy and a taste of history to travelers from all over the world.
"It's become tradition for a lot of people" Monson said of riding on Lady of the Lake.
From his family riding in the wheelhouse with him, to kindergarten excursions and senior pictures for Clear Lake students, the Lady of the Lake has become an icon for Clear Lake, Iowa.
Scott Monson began driving Lady of the Lake back in 2008.
"I just fell in love with it." he said. And eight years later, he and his former wife bought the riverboat in 2016.
A true paddle wheeler from the 1960s, she goes through regular maintenance to run from Memorial Day to the end of September. When Monson first bought Lady of the Lake, she underwent some serious renovations.
Monson had installed underwent an electrical system upgrade, a new John Deere diesel engine, new carpeting, reroofing, and new paddles.
That love and renovation pays off for Monson when he sees how Lady of the Lake brings joy to her passengers.
"To see the kids' smile on their face when they honk the horn — that's one of my favorite parts" Monson said.
Lady of the Lake will begin offering public excursions on May 27.
For her 35th Anniversary, Monson is planning a special dockside event at the end of August with drink specials and live music. Until then, each Wednesday will be a dockside night, the first of which will be held on June 1, with the Mockingbirds playing.
Ticket prices this year are $16 for adults, $7 for children 12 and under, and kids two and under ride for free.


"The thing with [U2] is that I know them all individually, so they're all taking part but what's unusual is that they aren't going to be U2, so I think we'll see something pretty different, which is something that always happens with Hal's events.
So if you want to see the brothers Evans on stage together, tickets for 'An Evening with Gavin Friday and Friends' (October 4th) are still available from the Carnegie Hall box office and website.
My request: "Down Memory Lane" please??? A girl can dream, can't she?


The death of a loved one is tragic enough, but when you add the burden of dealing with the estate it can become almost unbearable.
You work through the almost endless stacks of paper trying to determine what there is to split between the heirs and how to legally handle everything.
Much of the estate may be easy to dispose of or distribute, but rarely is that the case with real estate holdings. Many times selling the real estate can take months.
We can't help you with all of the legal hoops you must jump through, but we can help you with selling the property.
Contact us and we will make you a fast, no obligation offer to purchase the property so that you can get the estate settled and get on with your life.


text:
Q: Getting invalid schema error, when having array of mongoose schema objects Here is my schema for userPost.js:
const mongoose = require("mongoose");

let userPostSchema = new mongoose.Schema({
    id:{
        type: mongoose.Types.ObjectId
    },

    body:{
        type: String
    }

}, {timestamps: true});

const UserPost = mongoose.model("post", userPostSchema);

module.exports = UserPost;

Here is my schema for userAccount.js:
const userPost = require("./UserPost");
const mongoose = require("mongoose");

let userAccountSchema = new mongoose.Schema({
    id:{
        type: mongoose.Types.ObjectId
    },

    name:{
        type: String
    },

    posts:
        {
            type: [userPost]
        }

}, {timestamps: true});

let userAccount = mongoose.model("account", userAccountSchema);

module.exports = userAccount;

I am getting the posts error:
node_modules\mongoose\lib\schema.js:984
        throw new TypeError('Invalid schema configuration: ' +
        ^

TypeError: Invalid schema configuration: `model` is not a valid type within the array `posts`.See http://.../mongoose-schematypes for a list of valid schema types.
    at Schema.interpretAsType (C:\Users\BackEnd\node_modules\mongoose\lib\schema.js:984:15)
    at Schema.path (C:\Users\BackEnd\node_modules\mongoose\lib\schema.js:677:27)
    at Schema.add (C:\Users\BackEnd\node_modules\mongoose\lib\schema.js:495:12)

I am having 2 schemas, userPost.js, that I am using in userAccount.js.
What is the problem ?
Why am I getting the following error:
TypeError: Invalid schema configuration: model is not a valid type within the array posts
I tried consulting the following link especially the 3rd code excerpt of the official Mongoose's documentation:
https://mongoosejs.com/docs/schematypes.html#arrays
I changed the following code:
posts:[
        {
            type: userPost
        }
    ]

To:
posts:
{
    type: [userPost]
}

but still getting the same error.

A: I am not sure but this can be the case whenever you are referring to other model you always have to use the mongoose reference keyword and then use information from that model to create an array.

A: You should have your schema as follows:
 const userPost = require("./UserPost");
const mongoose = require("mongoose");

let userAccountSchema = new mongoose.Schema({
    id:{
        type: mongoose.Types.ObjectId
    },

    name:{
        type: String
    },

    posts: [userPost]

}, {timestamps: true});

let userAccount = mongoose.model("account", userAccountSchema);

module.exports = userAccount;

posts does not need a type declaration.

A: Two things you have to remember:

*

*First is that because you are creating a schema and you are not changing your schema in apps, it is not recommended to use let. instead, try to store your schema in a Const variable.

*The "posts" is an array, you can simply write your schema to an array and not use types. Also, you must use the schema on another schema. You can change your code with:

const mongoose = require("mongoose");

export const userPostSchema = new mongoose.Schema({
    id:{
        type: mongoose.Types.ObjectId
    },

    body:{
        type: String
    }

}, {timestamps: true});

 const UserPost = mongoose.model("post", userPostSchema);

module.exports = UserPost;

and then:

import {userPostSchema} from "./UserPost" ;
const mongoose = require("mongoose");

const userAccountSchema = new mongoose.Schema({
    id:{
        type: mongoose.Types.ObjectId
    },

    name:{
        type: String
    },

    posts: [userPostSchema]

}, {timestamps: true});

let userAccount = mongoose.model("account", userAccountSchema);

module.exports = userAccount;

redpajama_set_name: RedPajamaStackExchange


text:
85. O.T.D. - 12/5/1901 - Walt Disney Is Born
Today is a significant day for all Disney fans as December 5th marks the day that Walt himself was born. The general story of Walt's life is well documented and known by most Disney enthusiasts. You can even learn about his background and accomplishments by visiting Walt Disney, One Man's Dream in Hollywood Studios. In thinking about how I wanted to honor Walt, I have decided to do something different. Being that Digital Disney World is about modern technology, I thought it would be fun to discuss some of the major advancements since his passing in 1966, and ask: "What would Walt think?"
First and foremost, we have to ask: "What would Walt think of Walt Disney World in general?" We'd have to assume that he would be extremely proud of what his Florida project had become. Although Walt had the basic plans for the Magic Kingdom drawn up, he passed nearly five years before it opened. He originally envisioned one theme park and a community where people would live, work, and play which eventually turned into Epcot. Do you think he could have imagined this destination turning into the number one vacation spot in the world, with four theme parks, two water parks, multiple golf courses and over 25,000 hotel rooms?
The next question to ask would be "What would Walt think of the attraction technology?" Disneyland opened in 1955 and featured unique and cutting edge attractions, for that era. In the decade that followed, Walt introduced the world to audio-animatronics. He also shifted the concept of an old fashioned amusement park into his idea of what a "theme" park should be. First and foremost, Walt told stories with his attractions. As great as some of the original Disneyland rides were, they paled in comparison to what can be found in Disney parks today. Can you imagine what Walt would think about Tower of Terror or Mission Space? How would he react to seeing shows like Mickey's Philharmagic, Turtle Talk With Crush or Illuminations? Or what about the brand new talking Mickey character who can actually carry on a conversation with guests? You'd have to believe that he would be blown away by what this generation of imagineers has created.
Finally, "What would Walt think about computers and smartphones?" At the time of Walt's passing, there was no such thing as a personal computer. Do you think he could have envisioned people planning their vacations and even making dining reservations while sitting in front of a screen inside of their own home? The closest thing to a home computer in 1966 was a typewriter! When it comes to communications, there weren't even cordless phones in the 60's, let alone that fancy little gadget we call a cell phone. I think that Walt would have mixed feelings about the invention of the smartphone. He would probably be very impressed at this technology that allows guests to check wait times, look at restaurant menus, and even send short messages to friends and families. However, I think he would also be a little disappointed in seeing so many people staring at their little "Star Trek" communicators instead of taking in the beauty and wonder of their surroundings. There are so many details to be seen around Walt Disney World that many guests overlook, simply because their eyes are glued to their phones.
Overall, I think that Walt would be excited about the technology of today. He was one of the great innovators of his time and had a profound impact on all forms of family entertainment. Even forty-five years after his death, he continues to be an inspiration to so many people, including myself. Although times have changed dramatically since the first half of the 20th century, the spirit of Walt lives in the Disney company of today. We can never truly know what he would think of "today's" Disney, but we have to imagine that most of the time he looks down and smiles at what he sees. I'd like to leave you with a quote from the end of one of my favorite Disney movies, Meet the Robinsons:
Around here, however, we don't
look backwards for very long.
We keep moving forward, opening up new doors and
doing new things, because we're curious....
and curiosity keeps leading us down new paths.
Have a Disneyriffic day and remember to keep moving forward. See ya real soon!
Labels: O.T.D. - "On This Date"
DDW Pic 127. ESPN Club
DDW Pic 126. Wishes
DDW Pic 125. Disney Dreams Come True Parade
89. Disney Memories App
DDW Pic 124. Sunset on World Showcase Lagoon
DDW Pic 123. Spaceship Earth Hidden Mickey
DDW Pic 122. The Carthay Circle Theater
DDW Pic 121. Animal Kingdom Christmas Tree
DDW Pic 120. Magic Kingdom Entrance - Christmas
DDW Pic 119. Main Street Christmas
DDW Pic 118. Harmony Barber Shop
DDW Pic 117. Contemporary Resort
DDW Pic 116. Floridian Gingerbread House
DDW Pic 115. Tomorrowland Countdown
88. Sorcerer Radio
DDW Pic 114. Goofy Cloud
DDW Pic 113. The Tree of Life
DDW Pic 112. Universe of Energy
DDW Pic 111. Pooh and I
87. Widen Your World
DDW Pic 110. Space Mountain
DDW Pic 109. Wildlife Express
DDW Pic 108. Magic Kingdom Toy Soldiers
DDW 107. New Haunted Mansion Queue
86. The Dream Team Project - Update
DDW 106. Indiana Jones Epic Stunt Spectacular
DDW Pic 105. Cosmic Ray's Starlight Cafe
DDW Pic 104. Magic Kingdom
DDW Pic 103. Illuminations
DDW Pic 102. Magic Kingdom Christmas Tree
DDW Pic 101. Jungle Cruise
DDW Pic 100. Pluto at 'Ohana
DDW Pic 99. Electrical Water Pageant
DDW Pic 98. Walt Disney World Speedway
DDW Pic 97. Pop Century Resort


text:
Helan Abdulla (Urmia, Iran, 16 de novembre de 1988), més coneguda pel nom artístic Helly Luv, és una cantant, ballarina, coreògrafa, actriu i model kurda. La seua carrera va començar pujant vídeos de covers en xarxes socials com MySpace i YouTube. Helly Luv ha protagonitzat pel·lícules, vídeos musicals i ha publicat el seu propi material. Va guanyant popularitat des de 2013 amb el seu senzill «Risk it All», signant un contracte professional amb G2 Music Group un any després. En 2014, va aparèixer en la seua primera pel·lícula, Mardan.
Helly Luv va nàixer en Urmia el 1988, a una família d'origen kurd durant la Guerra de Golf Pèrsic. Helly i la seua família van fugir a Turquia per seguretat, fet que deixà a l'entitat familiar en una situació econòmica molt precària fins que els van acceptar una sol·licitud per a esdevindre ciutadans de Finlàndia, sent la família de Helly Luv una de les primeres famílies kurdes en emigrar al país bàltic.

Referències

Enllaços externs

Cantants asiàtics
Cantants finlandesos
Actors iranians
Actors finlandesos
Kurds de l'Iran
Cantants en kurd
Músics kurds

redpajama_set_name: RedPajamaWikipedia


Definition of Ethnicity Ethnicity denotes groups, such as Irish, Fijian, or Sioux, etc. that share a common identity-based ancestry, language, or culture. It is often based on religion, beliefs, and customs as well as memories of migration or colonization (Cornell & Hartmann, 2007). In scientific analysis, it can be important to distinguish, however loosely, between race and ethnicity... Race, ethnicity and culture are concepts of extreme relevance in society today, and yet continue to be interpreted in various and often contradictory ways. The Dictionary provides the historical background and etymology of a wide range of words related to these concepts, looking at discourses of race, ethnicity and culture from a broadly multicultural perspective.
4 Ethnic Group •Ethnicity is a multifactorial concept including, but not limited to, cultural constructs, genetic background, ecological specialization, and self-identification.


text:
Home / Operations & IT
SAIJA has planned its operational strategy in a way that it can fully exploit the potential of its existing resources in the areas of human resources, Information Technology, capacity building, well laid down systems and processes to improve productivity and reduce costs thereby increasing efficiency at all levels.
In order to achieve the above, SAIJA plans to operate in coming times through the efficient spoke and hub structure of branch operations. Field activities will be carried by spoke offices which will consist of five field executives and an Assistant Branch Manager. Spoke offices will be set up in the heart of potential business areas like sub-divisions and outskirts of cities and will work through highly cost efficient skeletal structures. Four spoke offices will consist of a hub office which will be looked after by a Branch Manager. All the major administrative and IT related functions of reporting spoke offices will be carried out at their respective offices. Moreover, in order to keep the set up and operational cost to the lowest possible levels either one or two spoke office operations will be carried in the same office premise in which the hub office will run, thus cost will be shared between hub and spoke offices.
In 2018-19, the company's strategy is to expand its operations in UP and Haryana.In new geographies we are expanding our operations to Punjab.With this we will be at 100 branches. We are graduating to Tab based collections, enrollments and repayments which will help us improve on our operational efficiency. We are also exploring cashless repayment collection modules.
Financial Management and Reporting
SAIJA is following best micro-finance practices and Indian Accounting Standard in conjunction with CGAP recommended reporting framework for the financial and portfolio management. In respect of provisioning, disclosure and prudential norms, it is also in compliance with the requirements of Companies Act, 1956 and Non Banking Financial Company Directions.
The entire Financial Reporting and building the financial statements is being done through state-of the-art software. There is an integrated system used for Loan Management and Financial Accounting, which makes it very easy to monitor and control the business through systemic MIS reports.
A strong & robust financial management system has been built in SAIJA keeping the scale of operations in mind.


When the dot-com bubble burst in 2000 it sent significant numbers of businesses to the wall. Fast forward 19 years, Professor John Colley looks at what might happen following the similar "app" boom.
How do demographics affect interest rates?
The middle-aged invest and the young borrow and the reationship between the two will affect interest rates, writes Dr Arie Gozluklu, Associate Professor of Finance at Warwick Business School. How important is tracking the slow moving changes in demographics when modelling forecasts for the long-term?


text:
Wild horse advocate continues push for radar speed signs on NM 48
Debra Wilcox with Wild Horse Observers Association continues the push to post at least two radar speed readers along with flashing beacons and wildlife warning signs to protect free-roaming horses and wildlife
Wild horse advocate continues push for radar speed signs on NM 48 Debra Wilcox with Wild Horse Observers Association continues the push to post at least two radar speed readers along with flashing beacons and wildlife warning signs to protect free-roaming horses and wildlife Check out this story on ruidosonews.com: https://www.ruidosonews.com/story/news/local/community/2018/11/30/wild-horse-advocate-continues-push-radar-speed-signs-nm-48/2162640002/
Dianne L Stallings, Ruidoso News Published 4:11 p.m. MT Nov. 30, 2018 | Updated 3:24 p.m. MT Dec. 20, 2018
Flashing beacons not the most effective option, she contends
One of the radar speed readers is near the sign warning of wild horses on NM48 in Alto north of Ruidoso.(Photo: Courtesy/Debra Wilcox)
Wild horse advocate wants radar speed signs permanently positioned on NM48
The campaign by advocates for free-roaming horses in the Alto area north of Ruidoso sparked action by the state Department of Transportation, but maybe not quite enough, Debra Wilcox, board director for the Wild Horse Observers Association contends.
Officials with DOT appeared before the Lincoln County Commissioner at the board's November meeting, proposing to install flashing beacons signs in New Mexico 48 as the most effective method of grabbing the attention of motorists and warning them of the presence along the road of elk, deer, wild horses and other wildlife.
Commissioners asked for more information and will consider at their meeting in December whether to commit to maintaining the signs after they are installed by the DOT.
In the interim, DOT crews installed several stationary routine wildlife alert signs in the safety corridor and apparently planned on temporarily bringing in radar speed signs to caution drivers if they are exceeding the limit.
The wild horses in Alto usually stay off the road, only crossing at certain points, but after a dozen confiscated in 2016 and released on a court order. horses were seen on the roadway more frequently. (Photo: Courtesy/David Tremblay)
But Wilcox said the unique situation in Alto and the configuration of the highway warrant the speed readers on a permanent basis. During a special commission meeting in early November, the discussion centered on those readers as an option, she said.
Wilcox stays in close contact with Tim Parker, DOT engineer in District 2 that includes Lincoln County. She wrote him Wednesday that she drove through Alto and saw only one speed radar sign on the north side of NM48, when she expected to see a second unit on the south sign, "but nothing was there except the painted spot."
She noticed a reader was installed in a low traffic area in Upper Canyon on Main Street and wrote Parker she was concerned that the DOT was going to ignore "a very concerned public's request on radar readers."
She asked for data to support preference for flashing beacons and said her group has data indicating the speed readers are the most effective.
"I was up there on the wildlife corridor and watched traffic for around 15 minutes on the south side, and most people are speeding coming down that roadway by Brewer's (gas station and convenience store) where there are no readers. Also the area by Brewers is very congested as tourists head to the newly opened Winter Perk this weekend, with wildlife crossing there as well," she wrote. "I see people going so much slower when they come up into the Enchanted Forest now that the radar is on the road."
She contended more than 100 wild animals are killed on the road each year.
"We who requested the radar still are requesting (two) permanent speed radar, not a beacon on the north and south side of NM48, and we ask that attention is paid to NM220 (Airport Road) as well.
"A beacon ma be good for it time when the traffic is ot as much and it is very dark, but speed readers are with all research the best we think for out unique area."
Contacted Friday, a spokesman for the DOT stated that only one temporary speed radar trailer was available "at this time, but in addition, NMDOT has installed eight wildlife crossing signs at strategic locations along the corridor to alert motorists of possible wildlife in the area."
The agency follows the Manual on Uniform Traffic Control Devices to keep the traveling public safe, the spokesman said.
The temporary radar speed trailer is in place until flashing beacons can be installed, the spokesman said, adding that, "Safety is our top priority and NMDOT would like to remind motorists to obey all posted signage and remember to drive safely," .
More: Wild horse herd returns to Alto, a signature of the local heritage
The situation was aggravated with the return of a herd of horses that were rounded up in 2016, then went into limbo when WHOA received an injunction stopping the New Mexico Livestock Board from selling them at auction.
A judge decided in October that they were wild horses and should be returned to Alto. A spokesman for the livestock board said Friday that a notice of the board's appeal of that decision was filed Nov. 14, but the specifics of and grounds for the appeal have not been filed.
Read or Share this story: https://www.ruidosonews.com/story/news/local/community/2018/11/30/wild-horse-advocate-continues-push-radar-speed-signs-nm-48/2162640002/
Reprieve for Motel 6 license revocation
Sheriff urges active opposition to Red Flag legislation
Ruidoso proposes new service animal definition
What's Happening: New faces and outside voices
Water and sewer improvements top grant application list
Funding, student vaping discussed by school board


The film Spiritual Flavours interweaves biographical narratives and spiritual accounts from Betty, Aziz and Ossie (who belong to a Catholic church, a mosque and a liberal synagogue, respectively) with the experiences of cooking in their homes. The chosen recipes thread the narratives of past, present and future aspirations, spirituality and the everyday. The commonalities and differences between them are expressed through visual and sonic synchronies and asynchronies; and a variety of visual materials and formats make visible the nature of the film as a research process. At the end, Betty, Aziz and Ossie meet, cook and eat together.


text:
How Apple Mac users were spied upon easily according to Google Cyber Security Team?
Researchers at Google Threat Analysis Group (TAG) have revealed a report detailing how a group of threat actors managed to spy on visitors to certain websites in Hong Kong using a critical zero-day vulnerability in macOS. Tracked as CVE-2021-30869, the flaw was fixed in macOS Catalina a couple of months ago.
In its report, Google notes that these attacks are part of a watering hole campaign, in which threat actors select specific websites to extract information from visitors: "The compromised websites had two iframes used as exploits for iOS and for macOS," TAG notes.
Attackers abused the zero-day vulnerability to install a backdoor on Apple devices through the compromised websites. Investigators believe that the hacking group responsible for this campaign has extensive technological and economic resources at its disposal, so it is likely that they are being sponsored by a state actor.
After gaining root access to the affected platform, the attackers download a payload running in the background on the infected devices. By analyzing a sample of the end-stage malware, the experts concluded that it is a development resulting from the most advanced software engineering, using a model based on Data Distribution Service (DDS) to establish C&C communications.
The backdoor used by hackers is also somewhat unusual, as it allowed to spy on targets in a very detailed way, plus attackers were able to obtain logs of the affected system, take screenshots, record audio and video, execute terminal commands and the ability to upload and download files.
Although the researchers did not explicitly mention which websites are compromised in this hacking campaign, they point out that among the targets is a major media outlet in Hong Kong and a pro-democracy activist group, so the origin of this attack is intuit in the Chinese authorities.
Tagged: backdoor, China, Common Vulnerability Scoring System (CVSS), cybersecurity, Google, Hacking, Information Security, macOS, malware, security flaws, Threat Analysis Group (TAG), vulnerability, Zero-day vulnerability